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...