Submission #1279645

#TimeUsernameProblemLanguageResultExecution timeMemory
1279645blacktulipFountain (eJOI20_fountain)C++17
100 / 100
192 ms35968 KiB
//Hello!.. //dört böler altı artı iki ama ne böler altı ne böler iki //Başarı, Boş Duranın Hakkı Değil... Koşturanın Hakkıdır. Hakan? //Ne yapayım, elimden gelen bu :( //S'il vous plait #include <bits/stdc++.h> using namespace std; typedef long long lo; #define fi first #define se second #define endl "\n" #define pb push_back #define int long long #define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) #define FOR for(int i=1;i<=n;i++) #define setrandom mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); #define getrandom(a,b) uniform_int_distribution<int>(a,b)(rng) #define mid ((start+end)/2) #define ort ((bas+son)/2) #define _ << " " << const lo inf = 1000000000; const lo li = 200005; const lo mod = 1000000007; int n,m,a[li],k,flag,t,d[li],c[li],fa[li][20],cap[li][20]; int cev; string s; vector<int> v; int32_t main(){ fio(); cin>>n>>t; for(int i=1;i<=n;i++){ cin>>d[i]>>c[i]; cap[i][0]=c[i]; } for(int j=0;j<=19;j++){ fa[n+1][j]=n+1; cap[n+1][j]=inf; } stack<pair<int,int>> st; for(int i=n;i>=1;i--){ while(st.size() && st.top().fi<=d[i])st.pop(); if(st.size())fa[i][0]=st.top().se; else fa[i][0]=n+1; st.push({d[i],i}); } for(int j=1;j<=19;j++){ for(int i=1;i<=n;i++){ fa[i][j]=fa[fa[i][j-1]][j-1]; cap[i][j]=cap[i][j-1]+cap[fa[i][j-1]][j-1]; } } while(t--){ int x; cin>>x>>k; for(int i=19;i>=0;i--){ if(cap[x][i]<k){ k-=cap[x][i]; x=fa[x][i]; } } if(x==n+1)x=0; cout<<x<<endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...