This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef pair<ll, ll> pll;
typedef pair<int, int> pii;
#define all(x) x.begin(), x.end()
#define kill(x) return cout << x << endl, 0
#define X first
#define Y second
//#define endl '\n'
constexpr ll pw(ll a, ll b, ll mod) {
return (!b ? 1 :
b & 1 ? a * pw(a * a % mod, b / 2, mod) % mod :
pw(a * a % mod, b / 2, mod));
}
constexpr int N = 1e6 + 10;
constexpr int MOD = 1e9 + 7;
constexpr ll INF = 1e18;
int cur, par[N], prv[N], sz[N];
char C[N];
string ans;
void Init() {
}
void TypeLetter(char L) {
cur++;
C[cur] = L;
par[cur] = cur - 1;
prv[cur] = cur;
sz[cur] = sz[par[cur]] + 1;
}
void UndoCommands(int U) {
cur++;
C[cur] = 'U';
par[cur] = cur - U - 1;
prv[cur] = prv[par[cur]];
sz[cur] = sz[par[cur]];
}
char GetLetter(int P) {
if (ans.size() != sz[cur]) {
for (int tmp = prv[cur]; tmp > 0; tmp = prv[par[tmp]]) {
ans.push_back(C[tmp]);
}
reverse(all(ans));
}
return ans[P];
}
Compilation message (stderr)
scrivener.cpp: In function 'char GetLetter(int)':
scrivener.cpp:49:20: warning: comparison of integer expressions of different signedness: 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
49 | if (ans.size() != sz[cur]) {
| ~~~~~~~~~~~^~~~~~~~~~
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |