제출 #203253

#제출 시각아이디문제언어결과실행 시간메모리
203253blacktulip세 명의 친구들 (BOI14_friends)C++17
0 / 100
1096 ms6356 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...