# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
3737 | jihoon | Make superpalindrome! (kriii1_M) | C++98 | 0 ms | 1672 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<stdio.h>
#include<string.h>
char str[100003]={0};
char sv[100003]={0};
int len;
int seq[50001][2]={0};
int seqp=0;
int bs(int s,int e){
int i;
int mid=(s+e)/2;
if(s>e) return 0;
if((e-s)%2==0){
seqp++;
seq[seqp][0]=str[mid];
sv[mid]=str[mid];
seq[seqp][1]=mid;
// printf("%c\n",str[mid]);
}
bs(s,mid-1+((e-s)%2));
for(i=s;i<=mid;i++){
sv[s+e-i]=sv[i];
}
//printf("%s\n",sv);
return 0;
}
int main(){
int i;
bool dd=false;
scanf("%s",str);
len=(int)strlen(str);
bs(0,len-1);
/*
for(i=0;i<len;i++){
printf("%c",sv[i]);
}
printf("\n");
*/
for(i=0;i<len;i++){
if(str[i]>sv[i]){
break;
}else if(str[i]<sv[i]){
dd=true;
break;
}
}
if(dd){
printf("%s",sv);
}else{
for(i=1;i<=seqp;i++){
seq[i][0]-=97;
}
seq[1][0]++;
for(i=1;i<=seqp;i++){
seq[i+1][0]+=(seq[i][0]/26);
seq[i][0]=seq[i][0]%26;
}
for(i=1;i<=seqp;i++){
seq[i][0]+=97;
str[seq[i][1]]=seq[i][0];
}
// printf("%s\n",str);
bs(0,len-1);
printf("%s",sv);
}
}
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |