Submission #1210702

#TimeUsernameProblemLanguageResultExecution timeMemory
1210702nguynFountain (eJOI20_fountain)C++20
100 / 100
216 ms34044 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define F first #define S second #define pb push_back #define pii pair<int,int> const int N = 2e5 + 5; int n, q; int d[N], c[N], r[N], v[N]; vector<int> g[N]; int up[N][20]; int sum[N][20]; void dfs(int u) { for (int v : g[u]) { // cout << v << ' ' << u << endl; up[v][0] = u; sum[v][0] = c[v]; for (int i = 1; i < 20; i++) { up[v][i] = up[up[v][i - 1]][i - 1]; sum[v][i] = sum[up[v][i - 1]][i - 1] + sum[v][i - 1]; } dfs(v); } } int jump(int u, int x) { for (int i = 19; i >= 0; i--) { if (sum[u][i] < x) { x -= sum[u][i]; u = up[u][i]; } } if (u == n + 1) return 0; return u; } signed main(){ ios_base::sync_with_stdio(false) ; cin.tie(0) ; cout.tie(0) ; if (fopen("INP.INP" ,"r")) { freopen("INP.INP" ,"r" , stdin) ; freopen("OUT.OUT" , "w" , stdout) ; } cin >> n >> q; for (int i = 1; i <= n; i++) { cin >> d[i] >> c[i]; } for (int i = 1; i <= q; i++) { cin >> r[i] >> v[i]; } stack<int> st; st.push(n + 1); d[n + 1] = 1e9 + 6; c[n + 1] = 1e9 + 6; for (int i = n; i >= 1; i--) { while(!st.empty() && d[i] >= d[st.top()]) st.pop(); g[st.top()].pb(i); // cout << st.top() << ' ' << i << '\n'; st.push(i); } for (int i = 0; i < 20; i++) sum[n + 1][i] = c[n + 1]; dfs(n + 1); // for (int i = 1; i <= n; i++) { // for (int j = 0; j < 3; j++) { // cout << sum[i][j] << ' '; // } cout << '\n'; // } for (int i = 1; i <= q; i++) { cout << jump(r[i], v[i]) << '\n'; } }

Compilation message (stderr)

fountain.cpp: In function 'int main()':
fountain.cpp:46:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   46 |         freopen("INP.INP" ,"r" , stdin) ;
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
fountain.cpp:47:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   47 |         freopen("OUT.OUT" , "w" , stdout) ;
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...