Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <iostream>
- #include <cstdio>
- #include <cstdlib>
- #include <vector>
- #include <algorithm>
- using namespace std;
- int main(){
- //freopen("input.txt","r",stdin);
- int n,q,k;
- while(scanf("%d%d%d",&n,&q,&k) == 3){
- long long ans = 0;
- int seq[n];
- long long prefixSum[n + 1];
- prefixSum[0] = 0;
- for(int i = 1; i < n + 1; i++){
- scanf("%d",&seq[i - 1]);
- prefixSum[i] = seq[i - 1] + prefixSum[i - 1];
- }
- long long sums[n];
- int a,b;
- for(int i = 0; i < q; i++){
- scanf("%d%d",&a,&b);
- sums[i] = prefixSum[b] - prefixSum[a - 1];
- }
- vector<long long> v(sums + q - k, sums + q);
- make_heap(v.begin(), v.end());
- for(int i = q - k - 1; i >= 0; i--){
- if(sums[i] > v.front()){
- ans++;
- }else{
- pop_heap(v.begin(), v.end());
- v.pop_back();
- v.push_back(sums[i]);
- push_heap(v.begin(), v.end());
- }
- }
- printf("%lld\n",ans);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement