답안 #931863

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
931863 2024-02-22T13:01:25 Z Tyx2019 세 명의 친구들 (BOI14_friends) C++17
100 / 100
44 ms 6388 KB
#include <bits/stdc++.h>
#define int long long
#define debug(x) if(0) cout << #x << " is " << x << "\n";
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2,bmi,bmi2,lzcnt,popcnt")
using namespace std;
main(){
	ios::sync_with_stdio(0);
	cin.tie(0);
	cout.tie(0);
	int N;
	cin >> N;
	string S;
	cin >> S;
	if(N % 2 == 0){
		cout << "NOT POSSIBLE";
		return 0;
	}
	int X = (N - 1) / 2;
	char curstr[N - 1];
	char rightneow[X];
	bool hvone = false;
	int numcorrect = 0;
	for(int i=1;i<N;i++){
		curstr[i - 1] = S[i];
	}
	for(int i=0;i<X;i++){
		if(curstr[i] == curstr[i + X]) numcorrect ++;
	}
	int numcorwithfunny = 0;
	if(numcorrect == X && !hvone){
		for(int j=0;j<X;j++) rightneow[j] = curstr[j];
		for(int j=0;j<X;j++) if(rightneow[j] == curstr[j]) numcorwithfunny ++;
		hvone = true;
	}
	for(int i=0;i<N - 1;i++){
		//change curstr[i] to S[i]
		if(i < X){
			if(curstr[i] == curstr[i + X]){
				if(S[i] != curstr[i + X]) numcorrect --; 
			}
			else if(S[i] == curstr[i + X]) numcorrect ++;
		}
		else{
			if(curstr[i] == curstr[i - X]){
				if(S[i] != curstr[i - X]) numcorrect --; 
			}
			else if(S[i] == curstr[i - X]) numcorrect ++;
		}
		if(hvone && i < X){
			if(curstr[i] == rightneow[i]){
				if(S[i] != rightneow[i]) numcorwithfunny --;
			}
			else if(S[i] == rightneow[i]) numcorwithfunny ++;
		}
		curstr[i] = S[i];
		if(numcorrect == X && hvone){
			debug(i);
			debug(curstr[2]);
			if(numcorwithfunny != X){
				cout << "NOT UNIQUE";
				return 0;
			}
		}
		if(numcorrect == X && !hvone){
			for(int j=0;j<X;j++) rightneow[j] = curstr[j];
			for(int j=0;j<X;j++) if(rightneow[j] == curstr[j]) numcorwithfunny ++;
			hvone = true;
		}
	}
	if(hvone) for(int i=0;i<X;i++) cout << rightneow[i];
	else cout << "NOT POSSIBLE";
}

Compilation message

friends.cpp:7:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
    7 | main(){
      | ^~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 0 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 452 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 428 KB Output is correct
19 Correct 0 ms 348 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 1 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 0 ms 348 KB Output is correct
24 Correct 0 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 1 ms 452 KB Output is correct
27 Correct 0 ms 348 KB Output is correct
28 Correct 0 ms 456 KB Output is correct
29 Correct 0 ms 348 KB Output is correct
30 Correct 0 ms 448 KB Output is correct
31 Correct 1 ms 348 KB Output is correct
32 Correct 0 ms 464 KB Output is correct
33 Correct 1 ms 348 KB Output is correct
34 Correct 0 ms 348 KB Output is correct
35 Correct 0 ms 348 KB Output is correct
36 Correct 1 ms 348 KB Output is correct
37 Correct 0 ms 348 KB Output is correct
38 Correct 0 ms 348 KB Output is correct
39 Correct 0 ms 348 KB Output is correct
40 Correct 0 ms 348 KB Output is correct
41 Correct 0 ms 348 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Correct 0 ms 344 KB Output is correct
44 Correct 0 ms 348 KB Output is correct
45 Correct 1 ms 344 KB Output is correct
46 Correct 0 ms 348 KB Output is correct
47 Correct 1 ms 348 KB Output is correct
48 Correct 0 ms 348 KB Output is correct
49 Correct 0 ms 348 KB Output is correct
50 Correct 0 ms 348 KB Output is correct
51 Correct 0 ms 348 KB Output is correct
52 Correct 0 ms 348 KB Output is correct
53 Correct 0 ms 348 KB Output is correct
54 Correct 0 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 26 ms 6388 KB Output is correct
2 Correct 26 ms 6336 KB Output is correct
3 Correct 44 ms 6384 KB Output is correct
4 Correct 26 ms 6384 KB Output is correct
5 Correct 44 ms 6388 KB Output is correct
6 Correct 3 ms 2552 KB Output is correct
7 Correct 30 ms 6252 KB Output is correct
8 Correct 9 ms 4860 KB Output is correct
9 Correct 23 ms 5632 KB Output is correct
10 Correct 34 ms 5888 KB Output is correct
11 Correct 8 ms 6128 KB Output is correct
12 Correct 1 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 456 KB Output is correct
15 Correct 0 ms 600 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 348 KB Output is correct
19 Correct 1 ms 344 KB Output is correct
20 Correct 1 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Correct 1 ms 348 KB Output is correct
24 Correct 1 ms 348 KB Output is correct
25 Correct 0 ms 348 KB Output is correct
26 Correct 1 ms 352 KB Output is correct
27 Correct 0 ms 356 KB Output is correct
28 Correct 0 ms 348 KB Output is correct
29 Correct 0 ms 468 KB Output is correct
30 Correct 0 ms 348 KB Output is correct
31 Correct 0 ms 356 KB Output is correct
32 Correct 0 ms 464 KB Output is correct
33 Correct 0 ms 360 KB Output is correct
34 Correct 0 ms 352 KB Output is correct
35 Correct 0 ms 352 KB Output is correct
36 Correct 1 ms 352 KB Output is correct
37 Correct 0 ms 344 KB Output is correct
38 Correct 1 ms 348 KB Output is correct
39 Correct 0 ms 532 KB Output is correct
40 Correct 0 ms 348 KB Output is correct
41 Correct 0 ms 456 KB Output is correct
42 Correct 0 ms 348 KB Output is correct
43 Correct 0 ms 456 KB Output is correct
44 Correct 0 ms 348 KB Output is correct
45 Correct 0 ms 348 KB Output is correct
46 Correct 1 ms 348 KB Output is correct
47 Correct 1 ms 344 KB Output is correct
48 Correct 0 ms 348 KB Output is correct
49 Correct 0 ms 456 KB Output is correct
50 Correct 0 ms 348 KB Output is correct
51 Correct 0 ms 348 KB Output is correct
52 Correct 0 ms 348 KB Output is correct
53 Correct 0 ms 348 KB Output is correct
54 Correct 1 ms 348 KB Output is correct