출처: https://cses.fi/problemset/task/1660
문제 설명
Given an array of n positive integers, your task is to count the number of subarrays having sum x.
입력
The first input line has two integers n and x: the size of the array and the target sum x.
The next line has n integers a_1,a_2,…,a_n: the contents of the array.
출력
Print one integer: the required number of subarrays.
입력 예
5 7
2 4 1 2 7
출력 예
3
제약조건
- 1 <= n <= 2x10^5
- 1 <= x, a_i <= 10^9
문제 풀이 내용
배열의 값들을 더해가다가, 원하는 값보다 크거나 같아지면 제일 앞쪽 값을 삭제한다. 이때 값이 같은 경우 카운터를 기록해서 출력한다.
프로그램 내용
더보기
...
vector <int> num_arr(nNum);
int ar_count = 0;
int ids=0;
int ar_sum = 0;
for(int idx=0; idx < nNum; ++idx)
int temp;
num_arr[idx] = temp;
ar_sum += num_arr[idx];
while(ar_sum >= tSum)
if (ar_sum == tSum) ar_count++;
ar_sum -= num_arr[ids++];
...
Sorting and Searching ( link )
'CSES' 카테고리의 다른 글
CSES 2. Maximum Subarray Sum II (1644) (0) | 2019.10.08 |
---|---|
CSES 2. Movie Festival II (1632) (0) | 2019.10.07 |
CSES 2. Nearest Smaller Values (1645) (0) | 2019.10.03 |
CSES 2. Sum of Four Values (1642) (0) | 2019.10.02 |
CSES 2. Sum of Three Values (1641) (0) | 2019.10.02 |