# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
223254 | cheeheng | Lampice (COCI19_lampice) | C++14 | 5069 ms | 4096 KiB |
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;
char S[50005];
vector<int> AdjList[50005];
const long long MOD = 2147483647LL;
long long pow26[50005];
int main(){
int N;
scanf("%d", &N);
pow26[0] = 1;
for(int i = 1; i <= N; i ++){
pow26[i] = pow26[i-1]*26%MOD;
}
for(int i = 1; i <= N; i ++){
scanf(" %c", &S[i]);
}
bool subtask2 = true;
for(int i = 1; i < N; i ++){
int a, b;
scanf("%d%d", &a, &b);
AdjList[a].push_back(b);
AdjList[b].push_back(a);
if(a == i && b == i+1 || b == i && a == i+1){
}else{
subtask2 = false;
}
}
if(subtask2){
int ans = 0;
for(int i = 1; i <= N; i ++){
long long forward1 = 0;
long long backward1 = 0;
for(int j = i; j <= N; j ++){
forward1 = (forward1*26+(S[j]-'0'))%MOD;
backward1 += pow26[j-i]*(S[j]-'0');
backward1 %= MOD;
if(forward1 == backward1){
ans = max(ans, j-i+1);
}
}
}
printf("%d", ans);
return 0;
}
return 0;
}
Compilation message (stderr)
# | 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... |