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 <stdio.h>
#include <vector>
using namespace std;
int N, Size, Left[3], Right[3];
char S[2000005];
void Check(int L1, int R1, int L2, int R2) {
int i, j, Num, Cnt=0;
for(i=L1, j=L2 ; i<=R1 && j<=R2 ; i++, j++) {
if(S[i]!=S[j]) {
Num=i;
Cnt++;
j--;
}
if(Cnt>1)
return;
}
if(!Cnt)
Num=R1;
Size++;
Left[Size]=L2;
Right[Size]=R2;
}
int Same(void) {
int i, j;
for(i=Left[1], j=Left[2] ; i<=Right[1] && j<=Right[2] ; i++, j++)
if(S[i]!=S[j])
return 0;
return 1;
}
int main(void) {
int mid;
scanf("%d %s",&N,&S[1]);
if(!(N%2)) {
printf("NOT POSSIBLE");
return 0;
}
mid=(N+1)/2;
Check(1,mid,mid+1,N);
Check(mid,N,1,mid-1);
if(Size==0)
printf("NOT POSSIBLE");
else if(Size==1 || (Size==2 && Same())) {
S[Right[1]+1]=NULL;
printf("%s",&S[Left[1]]);
}
else
printf("NOT UNIQUE");
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |