| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 149484 | GojekKawe (#200) | List of Unique Integers (FXCUP4_unique) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
#include <stdio.h>
#include <stdlib.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];
}
std::vector<int> PickUnique (int N){
int U[N];
for(int i=0;i<N;i++){
U[i]=0;
}
if(UniqueCount(0,N-1)==UniqueCount(0,N-2)+1){
U[N-1]=1;
};
if(UniqueCount(0,N-1)==UniqueCount(1,N-1)+1){
U[0]=1;
};
for(int i=N-2; i>0;i--){
if(UniqueCount(0,i)==UniqueCount(0,i-1)+1){
if(UniqueCount(i,N-1)==UniqueCount(i+1,N-1)+1){
U[i]=1;
}
}
};
std::vector<int> vect(U, U + sizeof(U)/sizeof(U[0]));
return vect;
}
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;
}
/*int main(){
int N;
cin>>N;
int a[N];
for(int i=0;i<N;i++){
cin>>a[N];
}
PickUnique(N);
}*/
