Submission #5946

# Submission time Handle Problem Language Result Execution time Memory
5946 2014-06-05T14:56:54 Z model_code Three Friends (BOI14_friends) C++
100 / 100
120 ms 3040 KB
#include <cstdio>
#include <cstdlib>

using namespace std;

#define MAX_N 2000010

#define NO 0
#define INITIAL 1
#define FINAL 2
#define MULTIPLE 3

int N;
char seq[MAX_N];

void readInput()
{
    scanf ("%d\n", &N);
    for (int i = 0; i < N; ++i)
        scanf ("%c", &seq[i]);
}

void writeOutput(int ans)
{
    if (ans == NO) {
        printf ("NOT POSSIBLE\n");
    }

    else if (ans == INITIAL) {
        
        for (int i = 0; i < N/2; ++i)
            printf ("%c", seq[i]);
        printf ("\n");
   
    }

    else if (ans == FINAL) {
        
        for (int i = 0; i < N/2; ++i)
            printf ("%c", seq[N/2+1+i]);
        printf ("\n");

    }

    else if (ans == MULTIPLE) {
        printf ("NOT UNIQUE\n");
    }   

    exit (0);
}

bool tryInitial()
{
    int extra = 0;
    for (int i = 0; i < N/2; ++i) {
        while (seq[i] != seq[N/2+i+extra]) {
            ++extra;
            if (extra > 1)
                return false;
        }
    }
    return true;
}

bool tryFinal()
{
    int extra = 0;
    for (int i = 0; i < N/2; ++i) {
        while (seq[i+extra] != seq[N/2+i+1]) {
            ++extra;
            if (extra > 1)
                return false;
        }
    }
    return true;
}

bool coincides()
{
    for (int i = 0; i < N/2; ++i) {
        if (seq[i] != seq[N/2+1+i])
            return false;
    }

    return true;
}

int main()
{
    readInput();

    if (N%2 == 0)
        writeOutput (NO);

    if (tryInitial()) {
        if (tryFinal() && !coincides())
            writeOutput (MULTIPLE);
        else
            writeOutput (INITIAL);
    }

    else if (tryFinal())
        writeOutput (FINAL);
    
    else
        writeOutput (NO);
    
    return 0;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 3040 KB Output is correct
2 Correct 0 ms 3040 KB Output is correct
3 Correct 0 ms 3040 KB Output is correct
4 Correct 0 ms 3040 KB Output is correct
5 Correct 0 ms 3040 KB Output is correct
6 Correct 0 ms 3040 KB Output is correct
7 Correct 0 ms 3040 KB Output is correct
8 Correct 0 ms 3040 KB Output is correct
9 Correct 0 ms 3040 KB Output is correct
10 Correct 0 ms 3040 KB Output is correct
11 Correct 0 ms 3040 KB Output is correct
12 Correct 0 ms 3040 KB Output is correct
13 Correct 0 ms 3040 KB Output is correct
14 Correct 0 ms 3040 KB Output is correct
15 Correct 0 ms 3040 KB Output is correct
16 Correct 0 ms 3040 KB Output is correct
17 Correct 0 ms 3040 KB Output is correct
18 Correct 0 ms 3040 KB Output is correct
19 Correct 0 ms 3040 KB Output is correct
20 Correct 0 ms 3040 KB Output is correct
21 Correct 0 ms 3040 KB Output is correct
22 Correct 0 ms 3040 KB Output is correct
23 Correct 0 ms 3040 KB Output is correct
24 Correct 0 ms 3040 KB Output is correct
25 Correct 0 ms 3040 KB Output is correct
26 Correct 0 ms 3040 KB Output is correct
27 Correct 0 ms 3040 KB Output is correct
28 Correct 0 ms 3040 KB Output is correct
29 Correct 0 ms 3040 KB Output is correct
30 Correct 0 ms 3040 KB Output is correct
31 Correct 0 ms 3040 KB Output is correct
32 Correct 0 ms 3040 KB Output is correct
33 Correct 0 ms 3040 KB Output is correct
34 Correct 0 ms 3040 KB Output is correct
35 Correct 0 ms 3040 KB Output is correct
36 Correct 0 ms 3040 KB Output is correct
37 Correct 0 ms 3040 KB Output is correct
38 Correct 0 ms 3040 KB Output is correct
39 Correct 0 ms 3040 KB Output is correct
40 Correct 0 ms 3040 KB Output is correct
41 Correct 0 ms 3040 KB Output is correct
42 Correct 0 ms 3040 KB Output is correct
43 Correct 0 ms 3040 KB Output is correct
44 Correct 0 ms 3040 KB Output is correct
45 Correct 0 ms 3040 KB Output is correct
46 Correct 0 ms 3040 KB Output is correct
47 Correct 0 ms 3040 KB Output is correct
48 Correct 0 ms 3040 KB Output is correct
49 Correct 0 ms 3040 KB Output is correct
50 Correct 0 ms 3040 KB Output is correct
51 Correct 0 ms 3040 KB Output is correct
52 Correct 0 ms 3040 KB Output is correct
53 Correct 0 ms 3040 KB Output is correct
54 Correct 0 ms 3040 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 116 ms 3040 KB Output is correct
2 Correct 120 ms 3040 KB Output is correct
3 Correct 112 ms 3040 KB Output is correct
4 Correct 116 ms 3040 KB Output is correct
5 Correct 112 ms 3040 KB Output is correct
6 Correct 104 ms 3040 KB Output is correct
7 Correct 116 ms 3040 KB Output is correct
8 Correct 96 ms 3040 KB Output is correct
9 Correct 104 ms 3040 KB Output is correct
10 Correct 100 ms 3040 KB Output is correct
11 Correct 84 ms 3040 KB Output is correct
12 Correct 0 ms 3040 KB Output is correct
13 Correct 0 ms 3040 KB Output is correct
14 Correct 0 ms 3040 KB Output is correct
15 Correct 0 ms 3040 KB Output is correct
16 Correct 0 ms 3040 KB Output is correct
17 Correct 0 ms 3040 KB Output is correct
18 Correct 0 ms 3040 KB Output is correct
19 Correct 0 ms 3040 KB Output is correct
20 Correct 0 ms 3040 KB Output is correct
21 Correct 0 ms 3040 KB Output is correct
22 Correct 0 ms 3040 KB Output is correct
23 Correct 0 ms 3040 KB Output is correct
24 Correct 0 ms 3040 KB Output is correct
25 Correct 0 ms 3040 KB Output is correct
26 Correct 0 ms 3040 KB Output is correct
27 Correct 0 ms 3040 KB Output is correct
28 Correct 0 ms 3040 KB Output is correct
29 Correct 0 ms 3040 KB Output is correct
30 Correct 0 ms 3040 KB Output is correct
31 Correct 0 ms 3040 KB Output is correct
32 Correct 0 ms 3040 KB Output is correct
33 Correct 0 ms 3040 KB Output is correct
34 Correct 0 ms 3040 KB Output is correct
35 Correct 0 ms 3040 KB Output is correct
36 Correct 0 ms 3040 KB Output is correct
37 Correct 0 ms 3040 KB Output is correct
38 Correct 0 ms 3040 KB Output is correct
39 Correct 0 ms 3040 KB Output is correct
40 Correct 0 ms 3040 KB Output is correct
41 Correct 0 ms 3040 KB Output is correct
42 Correct 0 ms 3040 KB Output is correct
43 Correct 0 ms 3040 KB Output is correct
44 Correct 0 ms 3040 KB Output is correct
45 Correct 0 ms 3040 KB Output is correct
46 Correct 0 ms 3040 KB Output is correct
47 Correct 0 ms 3040 KB Output is correct
48 Correct 0 ms 3040 KB Output is correct
49 Correct 0 ms 3040 KB Output is correct
50 Correct 0 ms 3040 KB Output is correct
51 Correct 0 ms 3040 KB Output is correct
52 Correct 0 ms 3040 KB Output is correct
53 Correct 0 ms 3040 KB Output is correct
54 Correct 0 ms 3040 KB Output is correct