๋ฐ์ํ
https://www.acmicpc.net/problem/14246
๋ฌธ์
โn [i,j] (i≤j) ์ ํฉ์ด k ๋ณด๋ค ํฐ ๋ชจ๋ ์ (i,j) ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ์์ค.
๊ฐ์ ์์ฐ์๋ก ์ด๋ฃจ์ด์ง ์์ด์ด ์ฃผ์ด์ง ๋, ํน์ ๊ตฌ๊ฐ์ ๋ ฅ
์ฒซ์งธ ์ค์๋ ์์ฐ์์ ๊ฐ์ n ์ด ์ฃผ์ด์ง๋ค. (1≤n≤100000 )
๋ค์ ์ค์๋ ์์ฐ์ n ๊ฐ๊ฐ ์ฃผ์ด์ง๋ค. ์์ฐ์๋ 100000 ๋ณด๋ค ํฌ์ง ์๋ค.
๊ทธ ๋ค์ ์ค์๋ ์์ฐ์ k ๊ฐ ์ฃผ์ด์ง๋ค. (1≤k≤1000000000 )
์ถ๋ ฅ
ํน์ ๊ตฌ๊ฐ [i,j] ์ ํฉ์ด k ๋ณด๋ค ํฐ ๋ชจ๋ ์ (i,j) ์ ๊ฐ์๋ฅผ ์ถ๋ ฅํ์์ค.
ํ์ด
๊ธธ์ด๊ฐ ๊ณ ์ ๋์ง ์์ ์ฌ๋ผ์ด๋ฉ ์๋์ฐ ๋ฌธ์
// ํ์ด : https://whkakrkr.tistory.com
#include <iostream>
#include <vector>
using namespace std;
int main() {
int n, k;
cin >> n;
vector<int> v(n);
for(int i=0; i<n; i++) {
cin >> v[i];
}
cin >> k;
long long ans = 0;
int left=0, right=0;
long long sum = v[0];
while(right<n) {
if(sum > k) {
ans += n-right;
sum -= v[left];
left++;
} else {
right++;
sum += v[right];
}
}
cout << ans;
return 0;
}
๋ฐ์ํ
'๐๏ธ ICPC Sinchon > Prefix Sum' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
[BOJ][C++] ๋ฐฑ์ค 11660๋ฒ : ๊ตฌ๊ฐ ํฉ ๊ตฌํ๊ธฐ 5 (0) | 2024.08.08 |
---|---|
[C++][BOJ] ๋ฐฑ์ค 2167๋ฒ: 2์ฐจ์ ๋ฐฐ์ด์ ํฉ (0) | 2024.08.08 |