제출 #702152

#제출 시각아이디문제언어결과실행 시간메모리
702152mychecksedadGondola (IOI14_gondola)C++17
55 / 100
41 ms4580 KiB
#include <bits/stdc++.h>
 #include <gondola.h>
using namespace std;


int valid(int n, int a[]){
	map<int, bool> m;
	for(int i = 0; i < n; ++i){
		if(m[a[i]]){
			return 0;
		}
		m[a[i]] = 1;
	}
	int mn = -1;
	for(int i = 0; i < n; ++i){
		if(a[i] <= n){
			mn = mn == -1 ? i : (a[mn] < a[i] ? mn : i);
		}
	}
	if(mn == -1) return 1;
	int s = a[mn];
	bool ok = 1;
	for(int i = mn; i != mn || ok; (i += 1) %= n, s++){
		if(s == n + 1) s = 1;
		ok = 0;
		if(a[i] <= n && a[i] != s){
			return 0;
		}
	}
	return 1;
}

int replacement(int n, int a[], int r[]){
	int l = 0, mn = -1;
	for(int i = 0; i < n; ++i){
		if(a[i] <= n){
			mn = mn == -1 ? i : (a[mn] < a[i] ? mn : i);
		}
	}
	int s;
	if(mn == -1)
		mn = 0, s = 1;
	else
		s = a[mn];
	bool ok = 1;
	set<array<int, 2>> S;
	for(int i = mn; i != mn || ok; (i += 1) %= n, s++){
		if(s == n + 1) s = 1;
		ok = 0;
		if(a[i] > n){
			S.insert({a[i], i});
			a[i] = s;
		}
	}
	for(int i = n + 1; !S.empty(); ){
		auto v = *S.begin();
		S.erase(S.begin());
		while(i <= v[0]){
			r[l] = a[v[1]];
			a[v[1]] = i;
			l++;
			i++;
		}
	}
	return l;
}

int countReplacement(int n, int inputSeq[]){
	return -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...