Submission #203244

#TimeUsernameProblemLanguageResultExecution timeMemory
203244blacktulipThree Friends (BOI14_friends)C++17
0 / 100
29 ms5272 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;
 
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;}
	if(bir==1){
		bas=0;
		son=n/2+1;
		while(son<n){
			cout<<s[bas];
			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...