제출 #1255041

#제출 시각아이디문제언어결과실행 시간메모리
1255041__ugur__Fountain (eJOI20_fountain)C++20
30 / 100
1593 ms1608 KiB
#include <iostream> #include <cstdint> #include <vector> #include <stack> #include <math.h> using namespace std; vector<int> diameters; // D vector<int> capacities; // C vector<int> next_drain; // next higher, min D (like pointer) int main() { int N, Q; cin >> N >> Q; diameters = vector<int>(N+1, 0); capacities = vector<int>(N+1, 0); next_drain = vector<int>(N+1, -1); for(int i=1; i<=N; i++) { int temp; cin >> temp; diameters[i] = temp; cin >> temp; capacities[i] = temp; } { stack<int> s; // next_drain'leri bulcazz for(int i=1; i<N; i++) { s.push(i); while(s.size() && (diameters[s.top()] < diameters[i+1])) { next_drain[s.top()] = i+1; s.pop(); } } } while(Q--) { int start, vol; cin >> start >> vol; while(1) { vol -= capacities[start]; if(vol > 0) { start = next_drain[start]; if(start == -1) { cout << "0\n"; goto next_query; } continue; } cout << start << '\n'; goto next_query; } next_query: continue; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...