답안 #148446

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
148446 2019-09-01T04:25:11 Z rkm0959(#3623, jun6873, babo) List of Unique Integers (FXCUP4_unique) C++17
100 / 100
6 ms 512 KB
#include <bits/stdc++.h>
#define L long long

using namespace std;

int UniqueCount(int l,int r);

int n;

vector<int> PickUnique(int N){
	vector<int>ret(N,1);
	n=N;
	int i;
	int now=1;
	for(i=1;i<N;i++)
	{
		int temp=UniqueCount(0,i);
		//printf("%d ",temp);
		if(temp<=now) ret[i]=0; 
		now=temp;
	}
	//puts("");
	now=1;
	for(i=N-2;i>=0;i--)
	{
		int temp=UniqueCount(i,n-1);
		//printf("%d ",temp);
		if(temp<=now) ret[i]=0; 
		now=temp;
	}
	//puts("");
	/*for(i=0;i<n;i++)
		printf("%d ",ret[i]);*/
	return ret;
}

/*
#include <stdio.h>
#include <stdlib.h>
#include "unique.h"

static int N, arr[222], unq[222][222], chk[222];

static void my_assert(int TF, const char* message){
	if(!TF){ puts(message); exit(0); }
}

static int call_cnt = 0;
int UniqueCount(int R, int C){
	call_cnt++;
	my_assert(call_cnt <= 40000, "Wrong : Too Much Calls");
	my_assert(R >= 0 && C < N && R <= C, "Wrong : Invalid R, C");

	return unq[R][C];
}

int main(){
	my_assert(scanf("%d", &N) == 1, "Error: Invalid Input");
	my_assert(2 <= N && N <= 200, "Error: Invalid Input");

	for(int i = 0; i < N; i++){
		my_assert(scanf("%d", &arr[i]) == 1, "Error: Invalid Input");
		my_assert(1 <= arr[i] && arr[i] <= 200, "Error: Invalid Input");
	}
	for(int i = 0; i < N; i++){
		int u = 0;
		for(int j = 1; j <= 200; j++) chk[j] = 0;
		for(int j = i; j < N; j++){
			chk[arr[j]]++;
			if(chk[arr[j]] == 1) u++;
			if(chk[arr[j]] == 2) u--;
			unq[i][j] = u;
		}
	}
	for(int i = 1; i <= 200; i++) chk[i] = 0;
	for(int i = 0; i < N; i++) chk[arr[i]]++;

	std::vector<int> rpd = PickUnique(N);
	my_assert((int) rpd.size() == N, "Wrong: Wrong Answer");
	for(int i = 0; i < N; i++){
		my_assert(rpd[i] == 0 || rpd[i] == 1, "Wrong: Wrong Answer");
		if(chk[arr[i]] == 1) my_assert(rpd[i], "Wrong : Wrong Answer");
		if(rpd[i]) my_assert(chk[arr[i]] == 1, "Wrong : Wrong Answer");
	}
	printf("Correct\n%d\n", call_cnt);
	return 0;
}
*/
# 결과 실행 시간 메모리 Grader output
1 Correct 5 ms 256 KB Correct : C = 2
2 Correct 5 ms 256 KB Correct : C = 8
3 Correct 5 ms 256 KB Correct : C = 48
4 Correct 5 ms 384 KB Correct : C = 98
5 Correct 5 ms 384 KB Correct : C = 98
6 Correct 5 ms 384 KB Correct : C = 152
7 Correct 5 ms 384 KB Correct : C = 198
8 Correct 5 ms 384 KB Correct : C = 298
9 Correct 5 ms 512 KB Correct : C = 354
10 Correct 6 ms 512 KB Correct : C = 398
11 Correct 5 ms 384 KB Correct : C = 398
12 Correct 5 ms 512 KB Correct : C = 398
13 Correct 6 ms 512 KB Correct : C = 398
14 Correct 5 ms 512 KB Correct : C = 398
15 Correct 5 ms 512 KB Correct : C = 398