Submission #1358188

#TimeUsernameProblemLanguageResultExecution timeMemory
1358188prikpaoThree Friends (BOI14_friends)C++20
100 / 100
8 ms6376 KiB
#include <bits/stdc++.h>
using namespace std;

int main(){
    ios_base::sync_with_stdio(false); cin.tie(0);
    int n;
    string x;
    cin >> n >> x;
    if(n%2==0){
        cout << "NOT POSSIBLE";
        return 0;
    }
    set<string> ans;
    if(x.substr(1, n/2)==x.substr(n/2+1, n/2))ans.insert(x.substr(1, n/2));//x[...][...]
    if(x.substr(0, n/2)==x.substr(n/2, n/2))ans.insert(x.substr(0, n/2));//[...][...]x
    if(x.substr(0, n/2)==x.substr(n/2+1, n/2))ans.insert(x.substr(0, n/2));//[...]x[...]
    //[...][..x..]
    for(int i=0, j=n/2; i<n/2 && j<n; i++, j++){
        if(x[i]!=x[j]){
            //cout << x.substr(n/2, i) << ' ' << x.substr(j+1, n/2-i) << ' ' << x.substr(0, n/2) << '\n';
            if(x.substr(n/2, i)+x.substr(j+1, n/2-i)==x.substr(0, n/2))ans.insert(x.substr(0, n/2));
            else break;
        }
    }
    //[..x..][...]
    for(int i=0, j=n/2+1; i<n/2+1 && j<n; i++, j++){
        if(x[i]!=x[j]){
            //cout << x.substr(0, i) << ' ' << x.substr(i+1, n/2-i) << ' ' << x.substr(n/2+1, n/2) << '\n';
            if(x.substr(0, i)+x.substr(i+1, n/2-i)==x.substr(n/2+1, n/2))ans.insert(x.substr(n/2+1, n/2));
            else break;
        }
    }
    //for(auto e:ans)cout << e << '\n';
    if(ans.empty())cout << "NOT POSSIBLE";
    else if(ans.size()==1)cout << *ans.begin();
    else cout << "NOT UNIQUE";
    return 0;
}
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...