Submission #963756

#TimeUsernameProblemLanguageResultExecution timeMemory
963756Trisanu_DasFountain (eJOI20_fountain)C++17
0 / 100
194 ms34100 KiB
#pragma GCC optimize("Ofast,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #include <bits/stdc++.h> using namespace std; #define int long long #define ff first #define ss second int n, q, jump[100005][20], h2o[100005][20]; signed main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cin >> n >> q; priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > > pq; for(int i = 1; i <= n; i++){ int d; cin >> d >> h2o[i][0]; while(!pq.empty() && pq.top().ff < d){ jump[pq.top().ss][0] = i; pq.pop(); } pq.push({d, i}); } while(!pq.empty()){ jump[pq.top().ss][0] = 0; pq.pop(); } jump[0][0] = 0; h2o[0][0] = 0; for(int j = 1; j < 20; j++) for(int i = 0; i <= n; i++){ jump[i][j] = jump[jump[i][j - 1]][j - 1]; h2o[i][j] = h2o[i][j - 1] + h2o[jump[i][j - 1]][j - 1]; } while(q--){ int r, v; cin >> r >> v; for(int i = 19; i >= 0; i--){ if(h2o[r][i] > v) continue; v -= h2o[r][i]; r = jump[r][i]; } cout << r << '\n'; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...