# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
16468 | jihoon | Make superpalindrome! (kriii1_M) | C++98 | 0 ms | 2448 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<cstdio>
#include<string.h>
char str[100005];
int n;
int same[100002];
int core[100002];
int bunho[100002];
char lst[100002];
bool onlyz=true;
int main(){
int ee,cnt=0,cnt2=0,i;
scanf("%s",str);
n=(int)strlen(str);
for(i=0;i<n;i++){
onlyz=onlyz & (str[i]=='z');
}
if(onlyz){
for(i=0;i<=n;i++){
printf("a");
}
}else{
ee=n-1;
str[ee]++;
while(str[ee]==('z'+1)){
str[ee]='a';
ee--;
str[ee]++;
}
ee=n-1;
while(1){
for(i=ee/2+1;i<=ee;i++){
same[i]=ee-i;
}
if((ee+1)%2){
core[ee/2]=1;
if(ee==0) break;
ee--;
}
ee/=2;
}
for(i=0;i<n;i++){
if(core[i]){
++cnt;
bunho[i]=cnt;
lst[cnt]=str[i];
}else{
bunho[i]=bunho[same[i]];
}
}
cnt2=0;
for(i=0;i<n;i++){
if(core[i]){
cnt2++;
}else{
if(lst[bunho[i]]<str[i]){
for(i=cnt2+1;i<=cnt;i++){
lst[i]='a';
}
lst[cnt2]++;
while(lst[cnt2]==('z'+1)){
lst[cnt2]='a';
cnt2--;
lst[cnt2]++;
}
break;
}
}
}
for(i=0;i<n;i++){
printf("%c",lst[bunho[i]]);
}
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |