#include <bits/stdc++.h>
using namespace std;
void setup()
{
    ios_base::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
}
int n;
string s;
bool a, b;
inline bool Check(string edited, string base)
{
    bool pre[base.size()], suf[base.size()];
    for (int i = 0; i < base.size(); ++i)
    {
        pre[i] = (i == 0 || pre[i - 1]) && (edited[i] == base[i]);
    }
    for (int i = base.size() - 1; i >= 0; --i)
    {
        suf[i] = (i == base.size() - 1 || suf[i + 1]) && (base[i] == edited[i + 1]);
    }
    for (int i = 0; i < edited.size(); ++i)
    {
        if ((i == 0 || pre[i - 1]) && (i == edited.size() - 1 || suf[i]))
        {
            return true;
        }
    }
    return false;
}
int main()
{
    setup();
    cin >> n >> s;
    if (!(n & 1))
    {
        cout << "NOT POSSIBLE";
        return 0;
    }
    a = Check(s.substr(0, n / 2 + 1), s.substr(n / 2 + 1, n / 2));
    b = Check(s.substr(n / 2, n / 2 + 1), s.substr(0, n / 2));
    if (a && b)
    {
        cout << (s.substr(0, n / 2) == s.substr(n / 2 + 1, n / 2) ? s.substr(0, n / 2) : "NOT UNIQUE");
    }
    else if (a)
    {
        cout << s.substr(n / 2 + 1, n / 2);
    }
    else if (b)
    {
        cout << s.substr(0, n / 2);
    }
    else
    {
        cout << "NOT POSSIBLE";
    }
    return 0;
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |