Advertisement
Guest User

Untitled

a guest
Feb 1st, 2015
337
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.14 KB | None | 0 0
  1. #include <iostream>
  2. #include <cstdio>
  3. #include <cstdlib>
  4. #include <vector>
  5. #include <algorithm>
  6.  
  7. using namespace std;
  8.  
  9. int main(){
  10.     //freopen("input.txt","r",stdin);
  11.     int n,q,k;
  12.     while(scanf("%d%d%d",&n,&q,&k) == 3){
  13.  
  14.         long long ans = 0;
  15.         int seq[n];
  16.         long long prefixSum[n + 1];
  17.         prefixSum[0] = 0;
  18.  
  19.         for(int i = 1; i < n + 1; i++){
  20.             scanf("%d",&seq[i - 1]);
  21.             prefixSum[i] = seq[i - 1] + prefixSum[i - 1];
  22.         }
  23.  
  24.         long long sums[n];
  25.         int a,b;
  26.         for(int i = 0; i < q; i++){
  27.             scanf("%d%d",&a,&b);
  28.             sums[i] = prefixSum[b] - prefixSum[a - 1];
  29.         }
  30.  
  31.         vector<long long> v(sums + q - k, sums + q);
  32.         make_heap(v.begin(), v.end());
  33.  
  34.         for(int i = q - k - 1; i >= 0; i--){
  35.             if(sums[i] > v.front()){
  36.                 ans++;
  37.             }else{
  38.                 pop_heap(v.begin(), v.end());
  39.                 v.pop_back();
  40.                 v.push_back(sums[i]);
  41.                 push_heap(v.begin(), v.end());
  42.             }
  43.         }
  44.  
  45.         printf("%lld\n",ans);
  46.  
  47.     }
  48.  
  49.     return 0;
  50. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement