CF978C Letters 문제 풀이 2 점
제목 설명 (인명, 지명 약간 개편)
학교 안 에는 침실 이 하나 있 는데, 침실 의 번 호 는 \ (1 \) 에서 \ (n \) 까지 이다.방 번호총 총 이 는 최근 에 학교 안의 이 구역 의 우 체 부 로 일 했다.그러나 그 를 곤 혹 스 럽 게 하 는 것 은 학교 학생 들 이 수령 주 소 를 작성 할 때 다른 주소 표기 방식 을 채택 했다 는 점 이다.그들 이 작성 한 수령 주 소 는 숫자 이지 만 이 숫자 는 어느 침실 의 어느 방 인지 직접 표시 할 수 없다.주소 의 번 호 는 \ (1 \) 부터 \ (a 1 + a 2 + \ cdots + a n \) 까지 입 니 다.그 중:
이렇게 유추 해 보면 마지막 오 피 스 텔 (즉 제 \ (n \) 호 오 피 스 텔) 의 마지막 방 (즉 제 \ (a n \) 개 방) 에 해당 하 는 번 호 는 다음 과 같다.
\(a_1 + a_2 + \cdots + a_n\)
오늘 은 총 총 이 가 소 포 를 배부 해 야 하 는데 이 소 포 를 받 을 주소 만 알 고 있 습 니 다. 각각 \ (b 1 \), \ (b 2 \),.........................................하지만 그 는 어떤 소포 에 대응 하 는 건물 번호 와 방 번 호 를 모 르 니 계산 해 주세요.
입력 형식
입력 한 첫 줄 에는 두 개의 정수 가 포함 되 어 있 습 니 다.(\ (1 \ \ le n, m \ le 2 \ times 10 ^ 5 \) 두 번 째 줄 은 \ (n \) 개의 정수 로 구 성 된 정수 서열 을 포함 합 니 다 \ (a 1, a 2, \ cdots, a n \) (\ (1 \ le ai \ \ \ le 10 ^ {10} \) 빈 칸 으로 구분 합 니 다.세 번 째 줄 은 \ (m \) 개의 정수 로 구 성 된 정수 서열 을 포함 합 니 다 \ (b 1, b 2, \ cdots, b m \) (\ (1 \ le bj \ le a 1 + a 2 + \ cdots + a n \) 빈 칸 으로 구분 합 니 다. 그 중 \ (b j \) 는 제 \ (j \) 개의 소포 에 대응 하 는 수령 주 소 를 표시 합 니 다.제목 은 모든 것 을 보증 합 니 다.
출력 형식
출력 줄각 줄 에는 두 개의 정수 가 포함 되 어 있 으 며, 하나의 빈 칸 으로 구분 되 어 있 으 며, 각각 이 소포 가 있 는 침실 의 건물 번호 \ (f \) (\ (1 \ le f \ le n \) 와 방 번호 \ (k \) (\ (1 \ le k \ \ le a f \) 를 나타 낸다.
제목 분석
이 문제 와 관련 된 알고리즘: 2 점.우선 2 점 이 필요 하 다 면 우 리 는 단조 로 운 배열 을 실현 해 야 한다.구 해 \ (sum [i] \) 도 간단 합 니 다. for 순환 을 엽 니 다. \ (sum [i] = sum [i - 1] + a [i] \)그리고 각각 에 대해 서 는 2 분 (sum \) 을 통 해 어느 침실 에 있 는 지 구 할 수 있 습 니 다.그리고 \ (b j \) 에 게 우 리 는 그의 침실 번 호 를 찾 았 다 \ (f \). 그러면 그의 방 번 호 는 \ (b j - a [f - 1] \) 이다.구현 코드 는 다음 과 같 습 니 다:
#include
using namespace std;
const int maxn = 200020;
int n, m;
long long a[maxn], b, sum[maxn];
int main() {
cin >> n >> m;
for (int i = 1; i <= n; i ++) {
cin >> a[i];
sum[i] = sum[i-1] + a[i];
}
while (m --) {
cin >> b;
int f = lower_bound(sum+1, sum+1+n, b) - sum;
long long k = b - sum[f-1];
cout << f << " " << k << endl;
}
return 0;
}
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
다양한 언어의 JSONJSON은 Javascript 표기법을 사용하여 데이터 구조를 레이아웃하는 데이터 형식입니다. 그러나 Javascript가 코드에서 이러한 구조를 나타낼 수 있는 유일한 언어는 아닙니다. 저는 일반적으로 '객체'{}...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.