제출 #203254

#제출 시각아이디문제언어결과실행 시간메모리
203254blacktulip세 명의 친구들 (BOI14_friends)C++17
0 / 100
1095 ms6336 KiB
#include <bits/stdc++.h> using namespace std; #define fio() ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL) int n,m,b[200005],a[200005],k,flag,t,mpp[50],bir,iki,uc,cev; char c; string s,ss,yaz; int main(void){ fio(); cin>>n>>s; //~ if(n%2==0){cout<<"NOT POSSIBLE\n";return 0;} for(int i=0;i<n;i++){ mpp[s[i]-'A']++; } for(int i=0;i<=25;i++){ if(mpp[i]%2){ cev++; c=i+'A'; } } //~ cout<<cev<<endl; //~ if(cev!=1){cout<<"NOT POSSIBLE\n";return 0;} cev=0; int bas=0; int son=n/2+1; flag=0; if(s[n/2]!=c)flag=1; while(son<n){ if(s[bas]!=s[son])flag=1; bas++; son++; } if(flag==0){ cev++; bir=1; } bas=0; son=n/2; flag=0; while(son<n){ if(s[bas]!=s[son] && s[son]!=c){flag=2;break;} if(flag==1 && s[bas]!=s[son]){flag=2;break;} if(s[bas]!=s[son]){ if(son==n/2){flag=2;break;} flag=1; son++; } else{ bas++; son++; } } if(flag<=1){ cev++; iki=1; } flag=0; bas=n/2; son=n-1; //~ cout<<c<<endl; while(bas>=0){ //~ cout<<s[bas]<<" : : "<<s[son]<<endl; if(s[bas]!=s[son] && s[bas]!=c){flag=2;break;} if(flag==1 && s[bas]!=s[son]){flag=2;break;} if(s[bas]!=s[son]){ if(bas==n/2){flag=2;break;} flag=1; bas--; } else{ bas--; son--; } } //~ cout<<cev<<endl; if(flag<=1){ cev++; uc=1; } //~ if(cev==0){cout<<"NOT POSSIBLE\n";return 0;} //~ if(cev>1){cout<<"NOT UNIQUE\n";return 0;} cev=0; for(int i=0;i<n;i++){ string s1{}; string s2{}; //~ if(s[i]!=c)continue; for(int j=0;j<n;j++){ if(i==j)continue; if((int)s1.size()<n/2)s1+=s[j]; else s2+=s[j]; } if(s1==s2){ cev++; yaz=s1; } } if(cev>=2){cout<<"NOT UNIQUE\n";return 0;} if(cev==0){cout<<"NOT POSSIBLE\n";return 0;} cout<<yaz<<endl; return 0; if(bir==1){ //~ cout<<"NOT UNIQUE\n";return 0; bas=0; son=n/2+1; while(son<n){ cout<<s[son]; son++; } return 0; } if(iki==1){ bas=0; son=n/2; flag=0; while(son<n){ if(s[bas]!=s[son] && s[son]!=c){flag=2;break;} if(flag==1 && s[bas]!=s[son]){flag=2;break;} if(s[bas]!=s[son]){ if(son==n/2){flag=2;break;} flag=1; son++; } else{ cout<<s[bas]<<endl; bas++; son++; } } return 0; } flag=0; bas=n/2; son=n-1; //~ cout<<c<<endl; while(bas>=0){ //~ cout<<s[bas]<<" : : "<<s[son]<<endl; if(s[bas]!=s[son] && s[bas]!=c){flag=2;break;} if(flag==1 && s[bas]!=s[son]){flag=2;break;} if(s[bas]!=s[son]){ if(bas==n/2){flag=2;break;} flag=1; bas--; } else{ ss+=s[bas]; bas--; son--; } } reverse(ss.begin(),ss.end());cout<<ss; return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...