Submission #852937

# Submission time Handle Problem Language Result Execution time Memory
852937 2023-09-23T08:35:23 Z lovrot Three Friends (BOI14_friends) C++17
100 / 100
113 ms 36556 KB
#include <cstdio>

using namespace std;

typedef long long ll; 

const int N = 2e6 + 10;
const ll B = 101;

int n;
char STR[N];

ll H[N], P[N];

int main() {
	scanf("%d", &n);
	P[0] = 1;
	for(int i = 1; i <= n; ++i) {	
		P[i] = P[i - 1] * B;
		scanf(" %c", STR + i);
		H[i] = H[i - 1] + P[i - 1] * (ll) (STR[i] - 'A' + 1);
	}
	if(n == 1 || (n & 1) == 0) { printf("NOT POSSIBLE\n"); return 0; }
	int m = n >> 1;
	int l = -1, r = -1;
	ll h = -1;
	for(int i = 1; i <= n; ++i) {
		if(i > m) {
			ll a = H[m] * P[n - m];
			ll b = H[n] - H[i] + (H[i - 1] - H[m]) * B;
			if(a == b) {
				if(h != -1 && b != h) { printf("NOT UNIQUE\n"); return 0; }
				l = 1;
				r = m;
				h = b;
			}
		} else {
			ll a = H[n] - H[m + 1];
			ll b = (H[m + 1] - H[i] + H[i - 1] * B) * P[n - m - 1];
//			if(i == 3) printf("%d %d\n", a, b);
			if(a == b) {
				if(h != -1 && b != h) { printf("NOT UNIQUE\n"); return 0; }
				l = m + 2;
				r = n;
				h = b;
			}
		}
	}
	if(l == -1) printf("NOT POSSIBLE\n");
	else {
		for(int i = l; i <= r; ++i) printf("%c", STR[i]);
		printf("\n");
	}
	return 0;
}

Compilation message

friends.cpp: In function 'int main()':
friends.cpp:16:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |  scanf("%d", &n);
      |  ~~~~~^~~~~~~~~~
friends.cpp:20:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |   scanf(" %c", STR + i);
      |   ~~~~~^~~~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2392 KB Output is correct
2 Correct 1 ms 2392 KB Output is correct
3 Correct 0 ms 2484 KB Output is correct
4 Correct 0 ms 2396 KB Output is correct
5 Correct 0 ms 2396 KB Output is correct
6 Correct 1 ms 2396 KB Output is correct
7 Correct 0 ms 2396 KB Output is correct
8 Correct 0 ms 2396 KB Output is correct
9 Correct 1 ms 2396 KB Output is correct
10 Correct 0 ms 2396 KB Output is correct
11 Correct 0 ms 2396 KB Output is correct
12 Correct 0 ms 2396 KB Output is correct
13 Correct 0 ms 2396 KB Output is correct
14 Correct 0 ms 2396 KB Output is correct
15 Correct 1 ms 2396 KB Output is correct
16 Correct 1 ms 2396 KB Output is correct
17 Correct 0 ms 2396 KB Output is correct
18 Correct 0 ms 2392 KB Output is correct
19 Correct 0 ms 2396 KB Output is correct
20 Correct 1 ms 2396 KB Output is correct
21 Correct 1 ms 2396 KB Output is correct
22 Correct 1 ms 2396 KB Output is correct
23 Correct 1 ms 2396 KB Output is correct
24 Correct 1 ms 2396 KB Output is correct
25 Correct 1 ms 2396 KB Output is correct
26 Correct 0 ms 2396 KB Output is correct
27 Correct 1 ms 2396 KB Output is correct
28 Correct 1 ms 2396 KB Output is correct
29 Correct 1 ms 2396 KB Output is correct
30 Correct 1 ms 2396 KB Output is correct
31 Correct 0 ms 2480 KB Output is correct
32 Correct 1 ms 2648 KB Output is correct
33 Correct 1 ms 2396 KB Output is correct
34 Correct 1 ms 2396 KB Output is correct
35 Correct 1 ms 2396 KB Output is correct
36 Correct 1 ms 2392 KB Output is correct
37 Correct 1 ms 2396 KB Output is correct
38 Correct 1 ms 2396 KB Output is correct
39 Correct 1 ms 2396 KB Output is correct
40 Correct 1 ms 2396 KB Output is correct
41 Correct 0 ms 2396 KB Output is correct
42 Correct 0 ms 2396 KB Output is correct
43 Correct 1 ms 2396 KB Output is correct
44 Correct 1 ms 2396 KB Output is correct
45 Correct 1 ms 2396 KB Output is correct
46 Correct 1 ms 2396 KB Output is correct
47 Correct 1 ms 2396 KB Output is correct
48 Correct 1 ms 2396 KB Output is correct
49 Correct 1 ms 2396 KB Output is correct
50 Correct 1 ms 2396 KB Output is correct
51 Correct 1 ms 2392 KB Output is correct
52 Correct 1 ms 2396 KB Output is correct
53 Correct 1 ms 2396 KB Output is correct
54 Correct 1 ms 2396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 112 ms 36556 KB Output is correct
2 Correct 105 ms 36436 KB Output is correct
3 Correct 103 ms 36496 KB Output is correct
4 Correct 113 ms 36408 KB Output is correct
5 Correct 107 ms 36392 KB Output is correct
6 Correct 77 ms 35592 KB Output is correct
7 Correct 105 ms 36508 KB Output is correct
8 Correct 68 ms 34132 KB Output is correct
9 Correct 104 ms 35048 KB Output is correct
10 Correct 97 ms 35252 KB Output is correct
11 Correct 65 ms 32080 KB Output is correct
12 Correct 0 ms 2480 KB Output is correct
13 Correct 0 ms 2396 KB Output is correct
14 Correct 0 ms 2396 KB Output is correct
15 Correct 1 ms 2396 KB Output is correct
16 Correct 1 ms 2484 KB Output is correct
17 Correct 0 ms 2396 KB Output is correct
18 Correct 0 ms 2396 KB Output is correct
19 Correct 0 ms 2392 KB Output is correct
20 Correct 1 ms 2480 KB Output is correct
21 Correct 0 ms 2396 KB Output is correct
22 Correct 0 ms 2396 KB Output is correct
23 Correct 1 ms 2396 KB Output is correct
24 Correct 1 ms 2392 KB Output is correct
25 Correct 0 ms 2396 KB Output is correct
26 Correct 1 ms 2396 KB Output is correct
27 Correct 1 ms 2396 KB Output is correct
28 Correct 1 ms 2396 KB Output is correct
29 Correct 0 ms 2396 KB Output is correct
30 Correct 1 ms 2396 KB Output is correct
31 Correct 1 ms 2396 KB Output is correct
32 Correct 1 ms 2396 KB Output is correct
33 Correct 1 ms 2396 KB Output is correct
34 Correct 0 ms 2396 KB Output is correct
35 Correct 0 ms 2472 KB Output is correct
36 Correct 1 ms 2396 KB Output is correct
37 Correct 1 ms 2396 KB Output is correct
38 Correct 0 ms 2396 KB Output is correct
39 Correct 1 ms 2396 KB Output is correct
40 Correct 0 ms 2396 KB Output is correct
41 Correct 1 ms 2396 KB Output is correct
42 Correct 1 ms 2396 KB Output is correct
43 Correct 1 ms 2392 KB Output is correct
44 Correct 1 ms 2392 KB Output is correct
45 Correct 1 ms 2396 KB Output is correct
46 Correct 1 ms 2396 KB Output is correct
47 Correct 0 ms 2396 KB Output is correct
48 Correct 1 ms 2392 KB Output is correct
49 Correct 1 ms 2396 KB Output is correct
50 Correct 0 ms 2396 KB Output is correct
51 Correct 1 ms 2396 KB Output is correct
52 Correct 0 ms 2396 KB Output is correct
53 Correct 1 ms 2396 KB Output is correct
54 Correct 0 ms 2396 KB Output is correct