제출 #956532

#제출 시각아이디문제언어결과실행 시간메모리
956532ezzzay세 명의 친구들 (BOI14_friends)C++14
100 / 100
38 ms6224 KiB
#include<bits/stdc++.h> using namespace std; #pragma GCC optimize("O3,unroll-loops") #pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt") #define int long long #define pb push_back #define ff first #define ss second const int N=1e5+5; vector<int>ans; void fun(int n){ if(n%2==0){ cout<<"NOT POSSIBLE"; return ; } string s; set<string>st; cin>>s; for(int i=0;i<n;i++){ string tmp; for(int j=0;j<n;j++){ if(i==j)continue; tmp+=s[j]; } if(tmp.substr(0,n/2)==tmp.substr(n/2,n/2)){ st.insert(tmp.substr(0,n/2)); } } if(st.size()>1){ cout<<"NOT UNIQUE"; } else if(st.size()==0){ cout<<"NOT POSSIBLE"; } else cout<< *st.begin(); } signed main(){ int n; cin>>n; if(n<=2001){ fun(n); return 0; } string s; set<char>st; cin>>s; if(n%2==0){ cout<<"NOT POSSIBLE"; return 0; } int l1=0; int r1=n/2+1; int cnt1=0; int u1=0; int e1=0; while(cnt1!=n/2){ if(s[l1]!=s[r1]){ l1++; e1=1; u1++; if(u1==2){ e1=0; break; } } l1++; r1++; cnt1++; } int p1=1; if(u1==2 and e1==0){ p1=0; } reverse(s.begin(),s.end()); int l2=0; int r2=n/2+1; int cnt2=0; int u2=0; int e2=0; while(cnt2!=n/2){ if(s[l2]!=s[r2]){ l2++; e2=1; u2++; if(u2==2){ e2=0; break; } } l2++; r2++; cnt2++; } int p2=1; if(e1 and e2){ cout<<"NOT UNIQUE"; return 0; } if(u1==2 and u2==2){ cout<<"NOT POSSIBLE"; return 0; } reverse(s.begin(),s.end()); if(p1){ cout<<s.substr(n/2+1,n/2); return 0; } if(p2){ cout<<s.substr(0,n/2); return 0; } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...