https://www.acmicpc.net/problem/2003
2003번: 수들의 합 2
첫째 줄에 N(1 ≤ N ≤ 10,000), M(1 ≤ M ≤ 300,000,000)이 주어진다. 다음 줄에는 A[1], A[2], …, A[N]이 공백으로 분리되어 주어진다. 각각의 A[x]는 30,000을 넘지 않는 자연수이다.
www.acmicpc.net
#include <iostream>
#include "vector"
using namespace std;
vector<int> board;
int main() {
int N, M;
cin >> N >> M;
for (int i = 0; i < N; i++) {
int input;
cin >> input;
board.push_back(input);
}
board.push_back(0);
int answer = 0;
int start = 0;
int end = 0;
int sum = 0;
while (end <= N) {
if (sum >= M) {
sum -= board[start];
start++;
}
else if (sum < M) {
sum += board[end];
end++;
}
if (sum == M)
answer++;
}
cout << answer;
}