Submission #285694

#TimeUsernameProblemLanguageResultExecution timeMemory
285694amoo_safarGondola (IOI14_gondola)C++17
55 / 100
1039 ms1784 KiB
#include "gondola.h"

#include <bits/stdc++.h>
#define pb push_back

using namespace std;

int valid(int n, int a[]){
	vector<int> A, S;
	for(int i = 0; i < n; i++) A.pb(a[i]);
	sort(A.begin(), A.end());
	for(int i = 0; i + 1 < n; i++) if(A[i] == A[i + 1]) return 0;
	for(int i = 0; i < n; i++) if(a[i] <= n) S.pb((i - a[i] + n) % n);
	sort(S.begin(), S.end());
	for(int i = 0; i + 1 < (int) S.size(); i++) if(S[i] != S[i + 1]) return 0;
	return 1;
}

//----------------------

const int MX = 250010;
int replacement(int n, int a[], int ans[]){
	int L = (*max_element(a, a + n)) - n;
	vector<int> mk(MX, 0);
	for(int i = 0; i < n; i++)
		mk[a[i]] = 1;
	int idx = 0;
	return L;
}

//----------------------

const long long Mod = 1e9 + 9;
int countReplacement(int n, int a[]){
	if(!valid(n, a)) return 0;
	vector<int> A;
	for(int i = 0; i < n; i++) A.pb(a[i]);
	sort(A.begin(), A.end());
	int mx = A.back();
	long long res = 1;
	for(int i = n + 1; i < mx; i++){
		int idx = lower_bound(A.begin(), A.end(), i) - A.begin();
		if(A[idx] == i) continue;
		res = (1ll * res * (n - idx)) % Mod;
	}
	if(n < A[0]){
		res = (1ll * res * n) % Mod;
		return res;
	}
	return res;
}
/*
1
30
16 26 18 19 20 13 22 21 24 25 17 27 28 29 30 1 2 3 11 5 6 8 7 9 10 12 4 23 14 15

3
7
1 2 3 4 5 6 5

7
4
1 2 7 6

*/

Compilation message (stderr)

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:27:6: warning: unused variable 'idx' [-Wunused-variable]
   27 |  int idx = 0;
      |      ^~~
#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...