求调
查看原帖
求调
663199
Tachibana27楼主2024/1/24 22:32

样例过,WA on # 4~7、12~17、19、52、63

%:include<bits/stdc++.h>
//#define int long long
#define qwert std::cout<<"\n"
#define asdf std::cout<<" ";
inline int read()<%
	int s=0;
	int w=1;
	char ch=getchar();
	for(;ch<'0'||ch>'9';ch=getchar())
    	if(ch=='-')
			w=-1;
	for(;ch>='0' and ch<='9';ch=getchar())
		s=s*10+ch-'0';
	return s*w;
%>

void write(int x)<%
	if(x<0)<%
   		putchar('-');
   		x=-x;
	%>
	if(x>9)
    	write(x/10);
	putchar(x%10+'0');
	return;
%>
int n,m;
bool flag1,flag2;
std::string s;
std::string op1,op2;
int point;
int main(){
	n=read();
	if(!(n&1)){
		puts("NOT POSSIBLE");
		exit(0);
	}
	std::cin>>s;
	bool flag=false;
	for(int i=1;i<n;i++)
		if(s[i]!=s[i-1]){
			flag=true;
			break;
		}
	m=(n>>1);
	if(!flag){
		for(int i=0;i<m;i++)
			putchar(s[i]);
		exit(0);
	}
	for(int i=0;i<=m;i++)
		op1+=s[i];
	for(int i=m;i<n&&point<m;i++) 
		if(s[i]==op1[point])
			point++;
	if(point==m)
		flag1=true;
    
	for(int i=n-m;i<=n;i++)
		op2+=s[i];
	point=0;
	for(int i=0;i<n-m&&point<m;i++)
		if(s[i]==op2[point])
			point++;
	if(point==m)
		flag2=true;
	{
	if(!flag1&&!flag2)
		puts("NOT POSSIBLE");
	else if(flag1&&flag2&&op1!=op2)
		puts("NOT UNIQUE");
	else if(flag1) 
		std::cout<<op1;
	else 
		std::cout<<op2;
	}
	return 0;
}
2024/1/24 22:32
加载中...