Submission #703664

#TimeUsernameProblemLanguageResultExecution timeMemory
703664Chal1shkanFountain (eJOI20_fountain)C++14
0 / 100
211 ms35280 KiB
# include <bits/stdc++.h> # define pb push_back # define ff first # define ss second # define nl "\n" # define sz(x) ((int)(x).size()) # define deb(x) cerr << #x << " = " << x << endl; # define pll pair <ll, ll> typedef long long ll; typedef unsigned long long ull; typedef long double ld; const ll maxn = 1e5 + 25; const ll inf = 1e18 + 0; const ll mod = 1e9 + 7; const ll dx[] = {-1, 1, 0, 0}; const ll dy[] = {0, 0, -1, 1}; using namespace std; ll n, q, up[maxn][22]; pll p[maxn]; ll sum[maxn][22]; void ma1n (/* SABR */) { cin >> n >> q; for (ll i = 1; i <= n; ++i) { cin >> p[i].ff >> p[i].ss; sum[i][0] = p[i].ss; } p[n + 1] = {inf, inf}; set <pll> st; for (ll i = 1; i <= n; ++i) { while (!st.empty() && (st.begin() -> ff) < p[i].ff) { up[(st.begin() -> ss)][0] = i; st.erase(st.begin()); } st.insert({p[i].ff, i}); } for (ll i = 1; i <= n; ++i) { if (up[i][0] == 0) up[i][0] = n + 1; } for (ll j = 0; j <= 20; ++j) { sum[n + 1][j] = inf; } for (ll j = 1; j <= 20; ++j) { for (ll i = 1; i <= n; ++i) { up[i][j] = up[up[i][j - 1]][j - 1]; sum[i][j] = sum[i][j - 1] + sum[up[i][j - 1]][j - 1]; } } while (q--) { ll id, v; cin >> id >> v; for (ll j = 20; j >= 0; --j) { if (sum[id][j] < v) { id = up[id][j]; v -= sum[id][j]; } } if (id == n + 1) id = 0; cout << id << nl; } } int main() { ios::sync_with_stdio(false); cin.tie(0); cout.tie(0); // freopen("file.in", "r", stdin); // freopen("file.out", "w", stdout); int ttt = 1; // cin >> ttt; for (int test = 1; test <= ttt; ++test) { // cout << "Case " << test << ":" << ' '; ma1n(); } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...