제출 #1300480

#제출 시각아이디문제언어결과실행 시간메모리
1300480m.zeeshanrashid곤돌라 (IOI14_gondola)C++20
55 / 100
43 ms10184 KiB
#include "gondola.h"
#include "bits/stdc++.h"
using namespace std;

vector<int>ori;

int valid(int n, int seq[])
{
	vector<int>a(n,0);
	map<int,int>d;
	for(int i=0;i<n;i++){
		d[seq[i]]++;
		if(d[seq[i]]>1) return 0;
	}
	for(int i=0;i<n;i++){
		a[i]=i;
		if(seq[i]<=n){
			a[i]=seq[i]%n;
			for(int j=i-1;j>=0;j--) a[j]=(a[j+1]-1+n)%n;
			for(int j=i+1;j<n;j++) a[j]=(a[j-1]+1)%n;
			break;
		}
	}
	for(auto &i:a) if(i==0) i=n;
	ori=a;
	for(int i=0;i<n;i++){
		if(seq[i]<=n and a[i]!=seq[i]) return 0;
	}
	return 1;
}

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

int replacement(int n, int seq[], int seq1[])
{
	int len=0,ma=0;
	map<int,int>d;
	for(int i=0;i<n;i++){
		d[seq[i]]=i+1;
		if(seq[i]>seq[ma]) ma=i;
	}
	valid(n,seq);
	int tem=seq[ma];
	len=seq[ma]-n;
	for(int i=n+1;i<=tem;i++){
		int ind;
		if(d[i]>0) ind=d[i]-1;
		else ind=ma;
		seq1[i-n-1]=ori[ind];
		ori[ind]=i;
		// cout<<ind<<endl;
	}
	return len;
}

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

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