Submission #884505

# Submission time Handle Problem Language Result Execution time Memory
884505 2023-12-07T14:16:27 Z 12345678 Three Friends (BOI14_friends) C++17
0 / 100
66 ms 28740 KB
#include <bits/stdc++.h>

using namespace std;

#define ll long long

const int nx=1e6+5, mod=1e9+7;
ll n, sz, dp[nx], dp2[nx], p[nx], val, val2, ans1=-1, ans2=-1;
string s1, s2;

int main()
{
    cin.tie(NULL)->sync_with_stdio(false);
    cin>>n>>s1;
    p[0]=1;
    for (int i=1; i<nx; i++) p[i]=(p[i-1]*26)%mod;
    sz=n/2;
    if (n%2==0)
    {
        cout<<"NOT POSSIBLE";
        return 0;
    }
    s2.resize(n);
    for (int i=0; i<sz+1; i++) s2[i]=s1[i+sz];
    for (int i=sz+1; i<n; i++) s2[i]=s1[i-sz-1];
    for (int i=sz+1; i<n; i++) val=(val+(s1[i]-'A')*p[i-sz-1])%mod;
    for (int i=1; i<=sz+1; i++) dp[i]=(dp[i-1]+(s1[i-1]-'A')*p[i-1])%mod;
    for (int i=sz+1; i>=1; i--) dp2[i]=(dp2[i+1]+(s1[i-1]-'A')*p[i-2])%mod;
    for (int i=0; i<=sz; i++) if (dp[i]+dp2[i+2]==val) ans1=i;
    for (int i=sz+1; i<n; i++) val2=(val2+(s2[i]-'A')*p[i-sz-1])%mod;
    for (int i=1; i<=sz+1; i++) dp[i]=(dp[i-1]+(s2[i-1]-'A')*p[i-1])%mod;
    for (int i=sz+1; i>=1; i--) dp2[i]=(dp2[i+1]+(s2[i-1]-'A')*p[i-2])%mod;
    for (int i=1; i<=sz; i++) if (dp[i]+dp2[i+2]==val2) ans2=i;
    if (ans1==-1&&ans2==-1)
    {
        cout<<"NOT POSSIBLE";
        return 0;
    }
    if (ans1!=-1&&ans2==-1)
    {
        for (int i=sz+1; i<n; i++) cout<<s1[i];
        return 0;
    }
    if (ans1==-1&&ans2!=-1)
    {
        for (int i=sz+1; i<n; i++) cout<<s2[i];
        return 0;
    }
    if (ans1!=-1&&ans2!=-1&&val==val2)
    {
        for (int i=sz+1; i<n; i++) cout<<s2[i];
        return 0;
    }
    cout<<"NOT UNIQUE";
}

/*
7
ABCAXBC
*/
# Verdict Execution time Memory Grader output
1 Correct 7 ms 8796 KB Output is correct
2 Correct 7 ms 8836 KB Output is correct
3 Correct 6 ms 9048 KB Output is correct
4 Correct 6 ms 8796 KB Output is correct
5 Correct 6 ms 8796 KB Output is correct
6 Correct 6 ms 8796 KB Output is correct
7 Correct 6 ms 8840 KB Output is correct
8 Correct 7 ms 8796 KB Output is correct
9 Correct 6 ms 8840 KB Output is correct
10 Correct 6 ms 8796 KB Output is correct
11 Correct 6 ms 8828 KB Output is correct
12 Correct 6 ms 8796 KB Output is correct
13 Correct 6 ms 8764 KB Output is correct
14 Correct 6 ms 8796 KB Output is correct
15 Correct 6 ms 8796 KB Output is correct
16 Correct 6 ms 8796 KB Output is correct
17 Correct 7 ms 8796 KB Output is correct
18 Correct 6 ms 8796 KB Output is correct
19 Correct 6 ms 8796 KB Output is correct
20 Correct 6 ms 8796 KB Output is correct
21 Correct 6 ms 8796 KB Output is correct
22 Correct 6 ms 8796 KB Output is correct
23 Correct 7 ms 8660 KB Output is correct
24 Correct 6 ms 8796 KB Output is correct
25 Correct 6 ms 8836 KB Output is correct
26 Correct 6 ms 8792 KB Output is correct
27 Correct 7 ms 8836 KB Output is correct
28 Correct 6 ms 8796 KB Output is correct
29 Correct 6 ms 8796 KB Output is correct
30 Correct 6 ms 8796 KB Output is correct
31 Correct 6 ms 8796 KB Output is correct
32 Correct 7 ms 8792 KB Output is correct
33 Correct 6 ms 8792 KB Output is correct
34 Correct 7 ms 8796 KB Output is correct
35 Correct 6 ms 8836 KB Output is correct
36 Correct 6 ms 8796 KB Output is correct
37 Correct 6 ms 8796 KB Output is correct
38 Correct 6 ms 8796 KB Output is correct
39 Correct 6 ms 8844 KB Output is correct
40 Correct 6 ms 8792 KB Output is correct
41 Correct 6 ms 8796 KB Output is correct
42 Correct 6 ms 8796 KB Output is correct
43 Correct 6 ms 8796 KB Output is correct
44 Incorrect 6 ms 8796 KB Output isn't correct
45 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 64 ms 28736 KB Output is correct
2 Correct 66 ms 28740 KB Output is correct
3 Incorrect 46 ms 27988 KB Output isn't correct
4 Halted 0 ms 0 KB -