제출 #131355

#제출 시각아이디문제언어결과실행 시간메모리
131355Mahdi_Jfri곤돌라 (IOI14_gondola)C++14
25 / 100
55 ms5244 KiB
#include "gondola.h"
#include<bits/stdc++.h>

using namespace std;

#define ll long long
#define pb push_back

const int maxn = 1e5 + 20;
const int maxm = 2.5e5 + 20;

int ex[maxn] , num[maxm];

int valid(int n, int a[])
{
	set<int> st;
	for(int i = 0; i < n; i++)
	{
		a[i]--;
		if(a[i] < 0)
			return 0;
		st.insert(a[i]);
	}

	int f = 1;
	for(int i = 0; i < n; i++)
		if(a[i] < n)
			f &= (a[(i + 1) % n] >= n || a[(i + 1) % n] == (a[i] + 1) % n);

	f &= (int)st.size() == n;
	return f;
}

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

int replacement(int n, int a[], int res[])
{
	memset(num , -1 , sizeof num);
	bool f = 0;
	for(int i = 0; i < n; i++)
	{
		a[i]--;
		if(!f && a[i] < n)
		{
			for(int j = 0; j < n; j++)
				ex[j] = ((a[i] + (j - i) + n) % n) + 1;
			f = 1;
		}
	}

	if(!f)
		for(int i = 0; i < n; i++)
			ex[i] = i + 1;

	int m = *max_element(a , a + n);
	int p = max_element(a , a + n) - a;
	for(int i = 0; i < n; i++)
		num[a[i]] = i;

	for(int i = n; i <= m; i++)
	{
		if(num[i] < 0)
			res[i - n] = ex[p];
		else
			res[i - n] = ex[num[i]];
	}

	return m - n + 1;
}

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

int countReplacement(int n, int inputSeq[])
{
	return -3;
}









#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...