Submission #884506

# Submission time Handle Problem Language Result Execution time Memory
884506 2023-12-07T14:17:36 Z 12345678 Three Friends (BOI14_friends) C++17
100 / 100
71 ms 30700 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])%mod==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])%mod==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 6 ms 8796 KB Output is correct
2 Correct 7 ms 8796 KB Output is correct
3 Correct 6 ms 8836 KB Output is correct
4 Correct 6 ms 8828 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 8796 KB Output is correct
8 Correct 7 ms 8796 KB Output is correct
9 Correct 6 ms 8792 KB Output is correct
10 Correct 6 ms 8796 KB Output is correct
11 Correct 6 ms 8796 KB Output is correct
12 Correct 6 ms 8840 KB Output is correct
13 Correct 6 ms 8796 KB Output is correct
14 Correct 6 ms 8796 KB Output is correct
15 Correct 6 ms 8792 KB Output is correct
16 Correct 6 ms 8796 KB Output is correct
17 Correct 7 ms 8840 KB Output is correct
18 Correct 6 ms 8796 KB Output is correct
19 Correct 6 ms 8828 KB Output is correct
20 Correct 6 ms 8836 KB Output is correct
21 Correct 7 ms 8796 KB Output is correct
22 Correct 6 ms 9052 KB Output is correct
23 Correct 6 ms 8796 KB Output is correct
24 Correct 6 ms 8796 KB Output is correct
25 Correct 6 ms 8840 KB Output is correct
26 Correct 6 ms 8796 KB Output is correct
27 Correct 6 ms 8796 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 6 ms 8796 KB Output is correct
33 Correct 6 ms 8796 KB Output is correct
34 Correct 6 ms 8796 KB Output is correct
35 Correct 6 ms 8796 KB Output is correct
36 Correct 6 ms 8836 KB Output is correct
37 Correct 7 ms 8796 KB Output is correct
38 Correct 7 ms 8796 KB Output is correct
39 Correct 6 ms 8796 KB Output is correct
40 Correct 6 ms 8796 KB Output is correct
41 Correct 7 ms 8796 KB Output is correct
42 Correct 6 ms 8792 KB Output is correct
43 Correct 6 ms 8796 KB Output is correct
44 Correct 6 ms 8796 KB Output is correct
45 Correct 6 ms 8796 KB Output is correct
46 Correct 6 ms 8844 KB Output is correct
47 Correct 6 ms 8796 KB Output is correct
48 Correct 6 ms 8796 KB Output is correct
49 Correct 6 ms 8796 KB Output is correct
50 Correct 6 ms 8832 KB Output is correct
51 Correct 6 ms 8848 KB Output is correct
52 Correct 6 ms 8660 KB Output is correct
53 Correct 6 ms 8792 KB Output is correct
54 Correct 6 ms 8792 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 71 ms 28916 KB Output is correct
2 Correct 64 ms 28948 KB Output is correct
3 Correct 65 ms 28744 KB Output is correct
4 Correct 66 ms 30700 KB Output is correct
5 Correct 64 ms 30692 KB Output is correct
6 Correct 10 ms 12796 KB Output is correct
7 Correct 64 ms 30696 KB Output is correct
8 Correct 45 ms 27748 KB Output is correct
9 Correct 59 ms 28576 KB Output is correct
10 Correct 59 ms 28612 KB Output is correct
11 Correct 42 ms 26824 KB Output is correct
12 Correct 6 ms 8792 KB Output is correct
13 Correct 6 ms 8796 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 8844 KB Output is correct
17 Correct 6 ms 8796 KB Output is correct
18 Correct 6 ms 8848 KB Output is correct
19 Correct 6 ms 8796 KB Output is correct
20 Correct 6 ms 8796 KB Output is correct
21 Correct 7 ms 8796 KB Output is correct
22 Correct 6 ms 8796 KB Output is correct
23 Correct 6 ms 8796 KB Output is correct
24 Correct 6 ms 8796 KB Output is correct
25 Correct 6 ms 8844 KB Output is correct
26 Correct 6 ms 8652 KB Output is correct
27 Correct 6 ms 8796 KB Output is correct
28 Correct 7 ms 8796 KB Output is correct
29 Correct 6 ms 8796 KB Output is correct
30 Correct 6 ms 8792 KB Output is correct
31 Correct 6 ms 8796 KB Output is correct
32 Correct 8 ms 8796 KB Output is correct
33 Correct 6 ms 8796 KB Output is correct
34 Correct 6 ms 8796 KB Output is correct
35 Correct 6 ms 8792 KB Output is correct
36 Correct 6 ms 8792 KB Output is correct
37 Correct 7 ms 8792 KB Output is correct
38 Correct 6 ms 8792 KB Output is correct
39 Correct 6 ms 8836 KB Output is correct
40 Correct 6 ms 8796 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 8660 KB Output is correct
44 Correct 6 ms 8844 KB Output is correct
45 Correct 6 ms 8796 KB Output is correct
46 Correct 6 ms 8792 KB Output is correct
47 Correct 6 ms 8796 KB Output is correct
48 Correct 6 ms 8792 KB Output is correct
49 Correct 6 ms 8796 KB Output is correct
50 Correct 7 ms 8796 KB Output is correct
51 Correct 6 ms 8796 KB Output is correct
52 Correct 6 ms 8792 KB Output is correct
53 Correct 6 ms 8796 KB Output is correct
54 Correct 6 ms 8796 KB Output is correct