Submission #103431

#TimeUsernameProblemLanguageResultExecution timeMemory
103431wilwxk세 명의 친구들 (BOI14_friends)C++11
0 / 100
23 ms4380 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN=2e6+5;

char v[MAXN];
int cont[30], cont2[30];
int n, igual;

int main() {
	scanf("%d", &n);
	scanf(" %s", v);

	if(n&1==0) {
		printf("NOT POSSIBLE\n");
		return 0;
	}

	for(int i=0; i<n; i++) cont2[v[i]-'A']++;
	for(int i=0; i<30; i++) if(cont[i]==cont2[i]) igual++;

	int resp=-1;
	for(int i=0; i<n; i++) {
		if(cont[v[i]-'A']==cont2[v[i]-'A']) igual--;
		if(i!=0&&cont[v[i-1]-'A']==cont2[v[i-1]-'A']) igual--;

		cont2[v[i]-'A']--;
		if(i!=0) cont[v[i-1]-'A']++;

		if(cont[v[i]-'A']==cont2[v[i]-'A']) igual++;
		if(i!=0&&cont[v[i-1]-'A']==cont2[v[i-1]-'A']) igual++;

		// printf("i: %d\n", igual);

		if(igual>=29) {
			// printf("%d serve\n", i);
			if(resp!=-1) {
				printf("NOT UNIQUE\n");
				return 0;
			}
			resp=i;
		}

	}

	if(resp==-1) printf("NOT POSSIBLE\n");
	else {
		if(resp<=n/2) {
			for(int i=(n+1)/2; i<n; i++) printf("%c", v[i]);
		}
		else {
			for(int i=0; i<n/2; i++) printf("%c", v[i]);
		}
	}

}

Compilation message (stderr)

friends.cpp: In function 'int main()':
friends.cpp:14:8: warning: suggest parentheses around comparison in operand of '&' [-Wparentheses]
  if(n&1==0) {
       ~^~~
friends.cpp:11:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d", &n);
  ~~~~~^~~~~~~~~~
friends.cpp:12:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf(" %s", v);
  ~~~~~^~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...