답안 #38519

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
38519 2018-01-04T10:36:34 Z Waschbar 세 명의 친구들 (BOI14_friends) C++14
100 / 100
149 ms 7860 KB
#include <bits/stdc++.h>
using namespace std;

int cnt[100];
//AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
int main() {
	
	string s;
	int n;
	cin >> n;
	cin >> s;
	//n = s.length();
	//cout << n << endl;
	
	if(n%2 == 0) {
		cout << "NOT POSSIBLE";
		return 0;
	}
	
	for(int i = 0; i < n; i++)
		cnt[s[i]-'A']++;
	
	char ch;
	int tmp = 0;
	for(int i = 0; i < 30; i++) 
		if(cnt[i]%2) tmp++,ch = (char)('A'+i);
	
	if(tmp != 1) {
		cout << "NOT POSSIBLE";
		return 0;	
	}
	
	int x1, x2, y1, y2;
	bool ind = 0;
	x1 = n/2; x2 = n-1;
	y1 = y2 = -1;
	while(x1 >= 0 && x2 > n/2) {
		if(s[x1] != s[x2] && s[x1] == ch){
			y1 = x1;
			break;
		}
		x1--; x2--;
	}
	if(x1 >= 0 && x2 <= n/2 && s[x1] == ch){
			y1 = x1; 
	}
	
	x1 = n/2-1; x2 = n-1;
	while(x1 >= 0 && x2 >= n/2) {
		if(s[x1] != s[x2] && s[x2] == ch){
			y2 = x2;
			break;
		}
		x1--; x2--;
	}
	if(x1 < 0 && x2 <= n/2 && s[x2] == ch){
			y2 = x2;
	}
	
	if(y1 != -1) {
		x1 = 0; x2 = n/2+1;
		if(x1 == y1) x1++;
		while(x1 <= n/2) {
			if(s[x1] != s[x2]) {y1 = -1; break;}
			x1++; x2++;
			if(x1 == y1) x1++;
		}
	}
	if(y2 != -1) {
		x1 = 0; x2 = n/2;
		if(x2 == y2) x2++;
		while(x1 < n/2) {
			if(s[x1] != s[x2]) {y2 = -1; break;}
			x1++; x2++;
			if(x2 == y2) x2++;
		}
	}
	
	//cout << y1 << " " << y2 << " " << ch << endl;
	
	
	if(y1 == -1 && y2 == -1) {
		cout << "NOT POSSIBLE";
		return 0;
	}
	
	bool b1, b2;
	b1 = b2 = 0;
	if(y1 != -1) {
		x1 = 0; x2 = n/2+1;
		if(x1 == y1) x1++;
		while(x1 <= n/2) {
			if(s[x1] != s[x2]) {
				b1 = 1;
				break;		
			}
			x1++; x2++;
			if(x1 == y1) x1++;
		}
	}
	if(y2 != -1){
		x1 = 0; x2 = n/2;
		if(x2 == y2) x2++;
		while(x1 < n/2) {
			if(s[x1] != s[x2]) {
				b2 = 1;
				break;		
			}
			x1++; x2++;
			if(x2 == y2) x2++;
		}
	}
	
	if(y1 != -1 && y2 != -1 && b1 == 1 && b2 == 1) {cout<<"NOT POSSIBLE";return 0;}
	if(y1 != -1 && y2 == -1 && b1 == 1) {cout<<"NOT POSSIBLE";return 0;}
	if(y1 == -1 && y2 != -1 && b2 == 1) {cout<<"NOT POSSIBLE";return 0;}
	
	char s1[n/2], s2[n/2];
	
	if(y1 != -1) {
		x1 = 0; x2 = n/2+1;
		if(x1 == y1) x1++;
		while(x1 <= n/2) {
			s1[x2-n/2-1] = s[x1];
			x1++; x2++;
			if(x1 == y1) x1++;
		}
	}
	if(y2 != -1) {
		x1 = 0; x2 = n/2;
		if(x2 == y2) x2++;
		while(x1 < n/2) {
			s2[x1] = s[x2];
			if(s[x1] != s[x2]) break;
			x1++; x2++;
			if(x2 == y2) x2++;
		}
	}
	
	if(y1 != -1 && y2 != -1){
		bool bl = 1;
		for(int i = 0; i < n/2; i++){
			if(s1[i] != s2[i]){
				bl = 0;
				break;
			}
		}
		if(!bl){
			cout << "NOT UNIQUE";
			return 0;
		}
	}
	
	if(y1 != -1) {
		for(int i = 0; i < n/2; i++)
		cout << s1[i];
	}
	else {
		for(int i = 0; i < n/2; i++)
		cout << s2[i];
	}
	
}

Compilation message

friends.cpp: In function 'int main()':
friends.cpp:34:7: warning: unused variable 'ind' [-Wunused-variable]
  bool ind = 0;
       ^
friends.cpp:38:21: warning: 'ch' may be used uninitialized in this function [-Wmaybe-uninitialized]
   if(s[x1] != s[x2] && s[x1] == ch){
                     ^
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 2016 KB Output is correct
2 Correct 0 ms 2016 KB Output is correct
3 Correct 0 ms 2016 KB Output is correct
4 Correct 0 ms 2016 KB Output is correct
5 Correct 0 ms 2016 KB Output is correct
6 Correct 0 ms 2016 KB Output is correct
7 Correct 0 ms 2016 KB Output is correct
8 Correct 0 ms 2016 KB Output is correct
9 Correct 0 ms 2016 KB Output is correct
10 Correct 0 ms 2016 KB Output is correct
11 Correct 0 ms 2016 KB Output is correct
12 Correct 0 ms 2016 KB Output is correct
13 Correct 0 ms 2016 KB Output is correct
14 Correct 0 ms 2016 KB Output is correct
15 Correct 0 ms 2016 KB Output is correct
16 Correct 0 ms 2016 KB Output is correct
17 Correct 0 ms 2016 KB Output is correct
18 Correct 0 ms 2016 KB Output is correct
19 Correct 0 ms 2016 KB Output is correct
20 Correct 0 ms 2016 KB Output is correct
21 Correct 0 ms 2016 KB Output is correct
22 Correct 0 ms 2016 KB Output is correct
23 Correct 0 ms 2016 KB Output is correct
24 Correct 0 ms 2016 KB Output is correct
25 Correct 0 ms 2016 KB Output is correct
26 Correct 0 ms 2016 KB Output is correct
27 Correct 0 ms 2016 KB Output is correct
28 Correct 0 ms 2016 KB Output is correct
29 Correct 0 ms 2016 KB Output is correct
30 Correct 0 ms 2016 KB Output is correct
31 Correct 0 ms 2016 KB Output is correct
32 Correct 0 ms 2016 KB Output is correct
33 Correct 0 ms 2016 KB Output is correct
34 Correct 0 ms 2016 KB Output is correct
35 Correct 0 ms 2016 KB Output is correct
36 Correct 0 ms 2016 KB Output is correct
37 Correct 0 ms 2016 KB Output is correct
38 Correct 0 ms 2016 KB Output is correct
39 Correct 0 ms 2016 KB Output is correct
40 Correct 0 ms 2016 KB Output is correct
41 Correct 0 ms 2016 KB Output is correct
42 Correct 0 ms 2016 KB Output is correct
43 Correct 0 ms 2016 KB Output is correct
44 Correct 0 ms 2016 KB Output is correct
45 Correct 0 ms 2016 KB Output is correct
46 Correct 0 ms 2016 KB Output is correct
47 Correct 0 ms 2016 KB Output is correct
48 Correct 0 ms 2016 KB Output is correct
49 Correct 0 ms 2016 KB Output is correct
50 Correct 0 ms 2016 KB Output is correct
51 Correct 0 ms 2016 KB Output is correct
52 Correct 0 ms 2016 KB Output is correct
53 Correct 0 ms 2016 KB Output is correct
54 Correct 0 ms 2016 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 113 ms 7860 KB Output is correct
2 Correct 129 ms 7860 KB Output is correct
3 Correct 119 ms 7860 KB Output is correct
4 Correct 119 ms 7860 KB Output is correct
5 Correct 119 ms 7860 KB Output is correct
6 Correct 73 ms 7860 KB Output is correct
7 Correct 119 ms 7860 KB Output is correct
8 Correct 76 ms 5648 KB Output is correct
9 Correct 129 ms 5652 KB Output is correct
10 Correct 149 ms 5648 KB Output is correct
11 Correct 83 ms 4980 KB Output is correct
12 Correct 0 ms 2016 KB Output is correct
13 Correct 0 ms 2016 KB Output is correct
14 Correct 0 ms 2016 KB Output is correct
15 Correct 0 ms 2016 KB Output is correct
16 Correct 0 ms 2016 KB Output is correct
17 Correct 0 ms 2016 KB Output is correct
18 Correct 0 ms 2016 KB Output is correct
19 Correct 0 ms 2016 KB Output is correct
20 Correct 0 ms 2016 KB Output is correct
21 Correct 0 ms 2016 KB Output is correct
22 Correct 0 ms 2016 KB Output is correct
23 Correct 0 ms 2016 KB Output is correct
24 Correct 0 ms 2016 KB Output is correct
25 Correct 0 ms 2016 KB Output is correct
26 Correct 0 ms 2016 KB Output is correct
27 Correct 0 ms 2016 KB Output is correct
28 Correct 0 ms 2016 KB Output is correct
29 Correct 0 ms 2016 KB Output is correct
30 Correct 0 ms 2016 KB Output is correct
31 Correct 0 ms 2016 KB Output is correct
32 Correct 0 ms 2016 KB Output is correct
33 Correct 0 ms 2016 KB Output is correct
34 Correct 0 ms 2016 KB Output is correct
35 Correct 0 ms 2016 KB Output is correct
36 Correct 0 ms 2016 KB Output is correct
37 Correct 0 ms 2016 KB Output is correct
38 Correct 0 ms 2016 KB Output is correct
39 Correct 0 ms 2016 KB Output is correct
40 Correct 0 ms 2016 KB Output is correct
41 Correct 0 ms 2016 KB Output is correct
42 Correct 0 ms 2016 KB Output is correct
43 Correct 0 ms 2016 KB Output is correct
44 Correct 0 ms 2016 KB Output is correct
45 Correct 0 ms 2016 KB Output is correct
46 Correct 0 ms 2016 KB Output is correct
47 Correct 0 ms 2016 KB Output is correct
48 Correct 0 ms 2016 KB Output is correct
49 Correct 0 ms 2016 KB Output is correct
50 Correct 0 ms 2016 KB Output is correct
51 Correct 0 ms 2016 KB Output is correct
52 Correct 0 ms 2016 KB Output is correct
53 Correct 0 ms 2016 KB Output is correct
54 Correct 0 ms 2016 KB Output is correct