Submission #863990

#TimeUsernameProblemLanguageResultExecution timeMemory
863990FIFI_cppFountain (eJOI20_fountain)C++17
30 / 100
5 ms604 KiB
#include <iostream> #include <vector> #include <algorithm> #include <numeric> #include <cstdlib> #include <cmath> #include <stdio.h> #include <math.h> #include <queue> #include <stack> #include <deque> #include <fstream> #include <iterator> #include <set> #include <map> #include <iomanip> #define ll long long #define fast ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL); using namespace std; struct DATA { int d; int c; int next; }; vector<DATA> reservoir; int n,q; int recur(int node,int quantity) { if (quantity <= reservoir[node].c) return node + 1; if (reservoir[node].next == -1) return 0; return recur(reservoir[node].next,quantity - reservoir[node].c); } int main() { fast cin >> n >> q; stack<pair<int,int>> sz; sz.push({1000000,0}); for (int i = 0;i < n;i++) { DATA inter; int d,c; cin >> d >> c; inter.d = d; inter.c = c; inter.next = -1; reservoir.push_back(inter); while (inter.d > sz.top().first) { reservoir[sz.top().second].next = i; sz.pop(); } sz.push({inter.d,i}); } for (int i = 0;i < q;i++) { int r,v; cin >> r >> v; cout << recur(r - 1,v) << endl; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...