Submission #707593

#TimeUsernameProblemLanguageResultExecution timeMemory
707593Nhoksocqt1Crayfish scrivener (IOI12_scrivener)C++17
60 / 100
1004 ms89548 KiB
#include<bits/stdc++.h> using namespace std; #define inf 0x3f3f3f3f #pragma GCC target ("avx2") #pragma GCC optimization ("O3") #pragma GCC optimization ("unroll-loops") #define sz(x) int((x).size()) #define fi first #define se second typedef long long ll; typedef pair<int, int> ii; template<class X, class Y> inline bool maximize(X &x, const Y &y) {return (x < y ? x = y, 1 : 0);} template<class X, class Y> inline bool minimize(X &x, const Y &y) {return (x > y ? x = y, 1 : 0);} mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); int Random(int l, int r) { return uniform_int_distribution<int>(l, r)(rng); } const int MAXN = 1000006; int lastLetter[MAXN], lenOf[MAXN], P[MAXN][20], numQuery; void Init(void) { numQuery = 0; lastLetter[0] = -1; } void TypeLetter(char c) { ++numQuery; lenOf[numQuery] = lenOf[numQuery - 1] + 1; P[numQuery][0] = numQuery - 1; for (int j = 1; j < 20; ++j) P[numQuery][j] = P[P[numQuery][j - 1]][j - 1]; lastLetter[numQuery] = c; } void UndoCommands(int U) { ++numQuery; lenOf[numQuery] = lenOf[numQuery - U - 1]; lastLetter[numQuery] = lastLetter[numQuery - U - 1]; P[numQuery][0] = numQuery - U - 1; for (int j = 1; j < 20; ++j) P[numQuery][j] = P[P[numQuery][j - 1]][j - 1]; } char GetLetter(int T) { int x(numQuery); for (int j = 19; j >= 0; --j) { if(lenOf[P[x][j]] > T + 1) x = P[x][j]; } if(lenOf[x] > T + 1) x = P[x][0]; return lastLetter[x]; }

Compilation message (stderr)

scrivener.cpp:6: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    6 | #pragma GCC optimization ("O3")
      | 
scrivener.cpp:7: warning: ignoring '#pragma GCC optimization' [-Wunknown-pragmas]
    7 | #pragma GCC optimization ("unroll-loops")
      |
#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...