Submission #388742

#TimeUsernameProblemLanguageResultExecution timeMemory
388742victoriadFountain (eJOI20_fountain)C++14
0 / 100
85 ms5480 KiB
#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
#include <utility>
#include <queue>
#include <map>
#include <iomanip>
#include <stack>
#include <fstream>
using namespace std;
 
int search(int l,vector<pair<long long int,int> >&v){
int low=0,hi=v.size(),r=-1,mid;
while(low<=hi){
  mid=low+(hi-low)/2;
  if(v[mid].first>=l){
    r=v[mid].second;
    hi=mid-1;
  }
  else{
    low=mid+1;
  }
}
if(r==-1)return 0;
else return r+1;
}
 void grupos(int nodo,vector<int>&d,vector<vector<pair<long long int, int> > >& c, vector<int>& v,int nc,vector<pair<int,int> >&p){
   int max=d[nodo];
   p[nodo].first=nc;
    p[nodo].second=0;
    int con=1;
   long long int x=0;
   vector<pair<long long int,int> >a;
   for(int i=nodo+1;i<d.size();i++){
     if(d[i]>max){
       if(p[i].first==-1){
         p[i].first=nc;
          p[i].second=con;
          con++;
       }
       max=d[i];
       x+=v[i];
       a.push_back(make_pair(x,i));
     }
   }
   c.push_back(a);
 }
int main(){
  ios::sync_with_stdio(false);
   cin.tie(NULL);
    int n,q,x=0;
    cin>>n>>q;
    int vo,r;
    long long int l;
    vector<int>v(n);
    vector<int>d(n);
    cin>>d[0]>>v[0];
    for(int i=1;i<n;i++){
      cin>>d[i]>>v[i];
    }
    vector<vector<pair<long long int, int> > >c;
    vector<pair<int,int> >p(n,make_pair(-1,0));
    for(int i=0;i<n;i++){
      if(p[i].first==-1){
        grupos(i,d,c,v,x,p);
        x++;
      }
     }
    
    for(int i=0;i<q;i++){
      cin>>r>>l;
      r--;
      l-=v[r];
      if(l<=0)cout<<r+1<<"\n";
      else{
          if(c[p[r].first].size()==p[r].second)cout<<0<<"\n";
          else{
          l+=v[r];
          if(p[r].second!=0)
          l+=c[p[r].first][p[r].second-1].first;
          
          cout<<search(l,c[p[r].first])<<"\n";
          }
        }
    }
  return 0;
}

Compilation message (stderr)

fountain.cpp: In function 'void grupos(int, std::vector<int>&, std::vector<std::vector<std::pair<long long int, int> > >&, std::vector<int>&, int, std::vector<std::pair<int, int> >&)':
fountain.cpp:36:22: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |    for(int i=nodo+1;i<d.size();i++){
      |                     ~^~~~~~~~~
fountain.cpp: In function 'int main()':
fountain.cpp:78:34: warning: comparison of integer expressions of different signedness: 'std::vector<std::pair<long long int, int> >::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   78 |           if(c[p[r].first].size()==p[r].second)cout<<0<<"\n";
      |              ~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~
fountain.cpp:55:9: warning: unused variable 'vo' [-Wunused-variable]
   55 |     int vo,r;
      |         ^~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...