제출 #576424

#제출 시각아이디문제언어결과실행 시간메모리
576424emad234Fountain (eJOI20_fountain)C++17
60 / 100
66 ms2180 KiB
#include <bits/stdc++.h>
#define all(v) ((v).begin(),(v).end())
typedef long long ll;
using namespace std;
const int mod = 1e9 + 7;
const int mxN = 2e6 + 1;
pair<int,int> a[mxN];
int prfx[mxN];
int main()
{
  ios::sync_with_stdio(0);cin.tie(0);cout.tie(0);
  int n,q;
  cin >>n>>q;
  for(int i = 1;i <= n;i++){
    cin >>a[i].first>>a[i].second;
  }
  a[n + 1].first = INT_MAX;a[n + 1].second = INT_MAX;
  for(int i = 1;i <= n + 1;i++){
    prfx[i] = prfx[i - 1] + a[i].second;
  }
  while(q--){
    int r,v;
    cin >>r>>v;
    if(n <= 1000 && q <= 2000){
      int prev = a[r].first - 1;
      for(int i = r;i <= n + 1;i++){
        if(a[i].first > prev){
          prev = a[i].first;
          v -= a[i].second;
        }
        if(v <= 0){
          if(i == n + 1)
            cout<<0<<'\n';
          else
            cout <<i<<'\n';
          break;
        }
      }
     }else{
      int x = lower_bound(prfx,prfx + n + 1,v + prfx[r - 1]) - prfx;
      if(x == n + 1)
        cout<<0<<'\n';
      else
        cout<<x<<'\n';
      }
  }
}































//                                                                  nice
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...