Submission #559477

#TimeUTC-0UsernameProblemLanguageResultExecution timeMemory
5594772022-05-10 02:38:55nghiass001Rainforest Jumps (APIO21_jumps)C++17
100 / 100
1152 ms50516 KiB
#include <bits/stdc++.h>
#define FOR(i,l,r) for(int i=(l); i<=(r); ++i)
#define REP(i,l,r) for(int i=(l); i<(r); ++i)
#define FORD(i,r,l) for(int i=(r); i>=(l); --i)
#define REPD(i,r,l) for(int i=(r)-1; i>=(l); --i)
using namespace std;
const int N = 2e5 + 5, logN = 18, INF = 0x3c3c3c3c;
int n, a[N], lft[N][logN], rgt[N][logN], high[N][logN];
vector<int> S[N];
void init(int N, vector<int> H) {
n = N + 2;
REP(i, 1, n) a[i] = H[i - 1];
a[0] = n; a[n] = n + 1;
FOR(i, 0, n) rgt[i][0] = n;
vector<int> Q;
FOR(i, 0, n) {
while (!Q.empty() && a[Q.back()] < a[i]) {
rgt[Q.back()][0] = i;
Q.pop_back();
}
if (Q.size()) lft[i][0] = Q.back();
Q.push_back(i);
}
FOR(i, 0, n) high[i][0] = (a[lft[i][0]] > a[rgt[i][0]] ? lft[i][0] : rgt[i][0]);
REP(j, 1, 18) FOR(i, 0, n) {
lft[i][j] = lft[lft[i][j - 1]][j - 1];
rgt[i][j] = rgt[rgt[i][j - 1]][j - 1];
high[i][j] = high[high[i][j - 1]][j - 1];
 
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...