Submission #13856

#TimeUsernameProblemLanguageResultExecution timeMemory
13856baneling100Make superpalindrome! (kriii1_M)C++98
0 / 1
0 ms1196 KiB
#include <stdio.h> #include <string.h> #define L_MAX 100000 int L; char S[L_MAX+1]; void divideConquer(int left, int right) { int ll=left, lm, lr, rl, rr=right, num; if((right-left)%2) { lr=(left+right)/2; rl=lr+1; } else { lr=(left+right)/2-1; rl=lr+2; } if(ll<lr) { divideConquer(ll,lr); divideConquer(rl,rr); } num=strncmp(S+ll,S+rl,lr-ll+1); if(num<0) { lm=(ll+lr)/2; while(S[lm]=='z') { S[lm]=S[ll+lr-lm]='a'; lm--; } S[lm]++; if(lm!=ll+lr-lm) S[ll+lr-lm]++; } strncpy(S+rl,S+ll,lr-ll+1); } int main(void) { scanf("%s",S); L=strlen(S); divideConquer(0,L-1); printf("%s",S); return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...