Submission #576531

#TimeUsernameProblemLanguageResultExecution timeMemory
576531NaserFountain (eJOI20_fountain)C++17
60 / 100
77 ms10316 KiB
#include <bits/stdc++.h> #define endl '\n' #define int long long #define pii pair<int,int> #define vint vector<int> #define se second #define fi first #define pb push_back #define all(x) x.begin(), x.end() using namespace std; int32_t main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int t = 1; //cin >> t; while (t--) { int n, q; cin >> n >> q; vint d(n); vint c(n); for (int i = 0; i < n; i++) { cin >> d[i] >> c[i]; } int prf[1000001] = {}; prf[0] = c[0]; for(int i = 1; i < n; i++){ prf[i] = prf[i - 1] + c[i]; } if(n > 1000){ while(q--){ int x,y; cin >> x >> y; x--; if(x != 0){ y+= prf[x - 1]; } // cout << y << ";" << endl; int ans = lower_bound(prf, prf + n, y)- prf; if(ans == n){ cout << 0 << endl; continue; } cout << ans + 1 << endl; } return 0; } while (q--) { int x, y; cin >> x >> y; int pos = x - 1; if (c[pos] >= y) { cout << x << endl; continue; } else { y -= c[pos]; } for (int i = x; i < n; i++) { if (d[i] > d[pos]) { pos = i; if (c[i] >= y) { y = 0; break; } else { y -= c[i]; pos = i; } } } if (y){ cout << 0 << endl; continue; } cout << pos + 1 << endl; } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...