Submission #388733

#TimeUsernameProblemLanguageResultExecution timeMemory
388733IwanttobreakfreeFountain (eJOI20_fountain)C++17
0 / 100
1598 ms257048 KiB
#include <iostream> #include <vector> #include <set> using namespace std; void dfs(int a,int i,vector<vector<int> >& cone,vector<vector<int> >& acumulacion,vector<vector<int> >& listas,vector<pair<int,int> >& fuen){ listas[a].push_back(i); if(acumulacion[a].empty())acumulacion[a].push_back(fuen[i].second); else{ int b=acumulacion[a].size(); acumulacion[a].push_back(acumulacion[a][b-1]+fuen[i].second); } for(int x:cone[a]){ dfs(x,i,cone,acumulacion,listas,fuen); } } int main(){ cin.tie(0); cout.tie(0); ios::sync_with_stdio(false); int n,q,li,num; cin>>n>>q; int men=1e9; vector<pair<int,int> >fuen(n); vector<vector<int> >cone(n,vector<int>()); vector<vector<int> >acumulacion(n,vector<int>()); vector<vector<int> >listas(n,vector<int>()); set<int> s; set<int>borrar; for(int i=0;i<n;i++){ cin>>fuen[i].second>>fuen[i].first; if(fuen[i].second<=men){ men=fuen[i].second; s.insert(i); } else{ s.insert(i); for(auto it=s.begin();it!=s.end();it++){ //cout<<*it<<' '; if(fuen[*it].second<fuen[i].second){ cone[i].push_back(*it); int a=*it; dfs(a,i,cone,acumulacion,listas,fuen); borrar.insert(*it); } } for(int x:borrar)s.erase(x); //cout<<'\n'; } } while(q--){ cin>>num>>li; num--; int b=acumulacion[num].size(); if(li>acumulacion[num][b-1])cout<<0<<'\n'; for(int i=b-1;i>=0;i--){ if(acumulacion[num][i]<=li){ cout<<listas[num][i]<<'\n'; break; } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...