Submission #1091723

#TimeUsernameProblemLanguageResultExecution timeMemory
1091723raphaelpThree Friends (BOI14_friends)C++14
100 / 100
40 ms8184 KiB
#include <bits/stdc++.h>
using namespace std;
int main()
{
    int N, M;
    cin >> N;
    if (N % 2 == 0)
    {
        cout << "NOT POSSIBLE" << '\n';
        return 0;
    }
    M = N / 2;
    string S;
    cin >> S;
    string a = S.substr(1, M), b = S.substr(M + 1, M);
    int tot = 0;
    for (int i = 0; i < M; i++)
        if (a[i] == b[i])
            tot++;
    string correct(M, '0');
    int match = M;
    if (tot == M)
        correct = a;
    for (int i = 0; i < N - 1; i++)
    {
        if (i < M)
        {
            if (a[i] == b[i])
                tot--;
            if (a[i] == correct[i])
                match--;
            a[i] = S[i];
            if (a[i] == b[i])
                tot++;
            if (a[i] == correct[i])
                match++;
        }
        else
        {
            if (a[i - M] == b[i - M])
                tot--;
            b[i - M] = S[i];
            if (b[i - M] == a[i - M])
                tot++;
        }
        if (tot == M)
        {
            if (match != M)
            {
                cout << "NOT UNIQUE" << '\n';
                return 0;
            }
            if (correct[0] == '0')
                correct = a;
        }
    }
    if (correct[0] == '0')
        cout << "NOT POSSIBLE" << '\n';
    else
        cout << correct;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...