Submission #1069250

# Submission time Handle Problem Language Result Execution time Memory
1069250 2024-08-21T18:08:59 Z raduv Fountain (eJOI20_fountain) C++14
100 / 100
107 ms 17244 KB
#include <stdio.h>
#include <utility>
#include <ctype.h>
#pragma GCC optimize("O3", "Ofast", "unroll-loops", "inline-functions")
#pragma GCC target ("avx2")
const int MAXN = 100'000;
const int LOG = 18;
using namespace std;
int rmq[LOG + 1][MAXN + 1], cap[LOG + 1][MAXN + 1];
pair<int, int> stiva[MAXN + 1];
int ns;
static inline int getInt(){
  int n = 0, ch;
  while(!isdigit(ch = getc(stdin)));
  do
    n = n * 10 + ch - '0';
  while (isdigit(ch = getc(stdin)));
  return n;
}
int main()
{
    int n, q, i, diam, p, a, b;
    n = getInt();
    q = getInt();
    for( i = 1; i <= n; i++ ){
      diam = getInt();
      cap[0][i] = getInt();
      while(ns > 0 && diam > stiva[ns].first)
        rmq[0][stiva[ns--].second] = i;
      stiva[++ns] = {diam, i};
    }
    while(ns > 0)
      rmq[0][stiva[ns--].second] = i;
    for ( p = 1; p <= LOG; p++ ){
      for( i = 1; i <= n; i++ ){
        rmq[p][i] = rmq[p - 1][rmq[p - 1][i]];
        cap[p][i] = cap[p - 1][i] + cap[p - 1][rmq[p - 1][i]];
      }
    }
    while(q--){
      a = getInt();
      b = getInt();
      for( i = LOG; i >= 0; i-- ){
        if(cap[i][a] < b){
          b -= cap[i][a];
          a = rmq[i][a];
        }
      }
      printf("%d\n", a);
    }
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 2648 KB Output is correct
3 Correct 1 ms 2648 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2652 KB Output is correct
7 Correct 1 ms 2652 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 75 ms 15520 KB Output is correct
2 Correct 87 ms 14812 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 1 ms 4440 KB Output is correct
2 Correct 1 ms 2648 KB Output is correct
3 Correct 1 ms 2648 KB Output is correct
4 Correct 1 ms 2652 KB Output is correct
5 Correct 1 ms 2652 KB Output is correct
6 Correct 1 ms 2652 KB Output is correct
7 Correct 1 ms 2652 KB Output is correct
8 Correct 75 ms 15520 KB Output is correct
9 Correct 87 ms 14812 KB Output is correct
10 Correct 1 ms 6748 KB Output is correct
11 Correct 39 ms 11036 KB Output is correct
12 Correct 107 ms 16464 KB Output is correct
13 Correct 91 ms 16516 KB Output is correct
14 Correct 51 ms 16464 KB Output is correct
15 Correct 37 ms 17244 KB Output is correct