Submission #73524

# Submission time Handle Problem Language Result Execution time Memory
73524 2018-08-28T11:33:10 Z TuGSGeReL Gondola (IOI14_gondola) C++14
60 / 100
70 ms 5580 KB
#include "gondola.h"
#include<bits/stdc++.h>
#define ll int
#define mp make_pair
#define pub push_back
#define pob pop_back
#define ss second
#define ff first
#define ext exit(0)
using namespace std;
ll i,j,z=0,st,ans;
vector<ll> vc,vv;
vector<pair<ll,ll> >v;
map<ll,ll>m;
int valid(int n, int inputSeq[])
{
	for(i=0;i<n;i++){
		if(m[inputSeq[i]]==1) return 0;
		m[inputSeq[i]]++;
	}
	for(i=0;i<n;i++){
		if(inputSeq[i]<n){
			st=(i-inputSeq[i]+1+n)%n;
			for(i=st;i<n;i++) vv.pub(inputSeq[i]);
			for(i=0;i<st;i++) vv.pub(inputSeq[i]);
			for(i=0;i<n;i++){
				if(vv[i]>n) continue;
				if(vv[i]!=i+1) return 0;
			}
			return 1;
		}
	}
	return 1;
}
int replacement(int n, int gondolaSeq[], int replacementSeq[]) {
	for(i=0;i<n;i++) gondolaSeq[i]--;
	
	for(i=0;i<n;i++){
		if(gondolaSeq[i] < n){
			st=(i-gondolaSeq[i]+n)%n;
		}
	}
	for(i=0;i<n;i++){
		if(gondolaSeq[i] >= n) v.pub(mp(gondolaSeq[i],(i-st+n)%n));
	}
	sort(v.begin(),v.end());
	if(v.size()==0) {
		return 0;
	}
	while(1){
		if(v.size()==1){
			while(v[0].ff>v[0].ss && v[0].ff>=n){
				if(v[0].ff-1>=n)vc.pub(v[0].ff-1);
				else vc.pub(v[0].ss);
				v[0].ff--;
			}
			break;
		}
		if(v.back().ff==v[v.size()-2].ff+1){
			vc.pub(v.back().ss);
			v.pob();
		}
		else {
			vc.pub(v.back().ff-1);
			v.back().ff--;
			if(v.back().ff==v.back().ss) v.pob();
		}
	}
	reverse(vc.begin(),vc.end());
	for(i=0;i<vc.size();i++) replacementSeq[i]=vc[i]+1;
	return vc.size();
}
ll countReplacement(int n, int inputSeq[]) {
	if(!valid(n,inputSeq)) return 0;
	bool boo=false;
	for(i=0;i<n;i++){
		if(inputSeq[i]>n)vc.pub(inputSeq[i]);
		else boo=true;
	}
	sort(vc.begin(),vc.end());
	ll prev=n+1,ans=1,mod=1e9+9;
	for(i=0;i<vc.size();i++){
		ll o=vc.size()-i,s=1,u=vc[i]-prev;
		while(u>0){
			if(u%2){
				s=(ll)(s*o)%mod;
			}
			o=(ll)(o*o)%mod;
			u/=2;
		}
		ans=(ans*s)%mod;
		prev=vc[i]+1;
	}
	if(!boo) ans=(ll)(ans*n)%mod;
	return ans;
}

Compilation message

gondola.cpp: In function 'int replacement(int, int*, int*)':
gondola.cpp:70:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<vc.size();i++) replacementSeq[i]=vc[i]+1;
          ~^~~~~~~~~~
gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:82:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(i=0;i<vc.size();i++){
          ~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 2 ms 468 KB Output is correct
3 Correct 2 ms 524 KB Output is correct
4 Correct 3 ms 524 KB Output is correct
5 Correct 4 ms 524 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 524 KB Output is correct
2 Correct 2 ms 688 KB Output is correct
3 Correct 3 ms 688 KB Output is correct
4 Correct 3 ms 688 KB Output is correct
5 Correct 2 ms 688 KB Output is correct
6 Correct 23 ms 2892 KB Output is correct
7 Correct 16 ms 2892 KB Output is correct
8 Correct 36 ms 4808 KB Output is correct
9 Correct 13 ms 4808 KB Output is correct
10 Correct 49 ms 5452 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5452 KB Output is correct
2 Correct 2 ms 5452 KB Output is correct
3 Correct 2 ms 5452 KB Output is correct
4 Correct 3 ms 5452 KB Output is correct
5 Correct 3 ms 5452 KB Output is correct
6 Correct 22 ms 5452 KB Output is correct
7 Correct 15 ms 5452 KB Output is correct
8 Correct 40 ms 5452 KB Output is correct
9 Correct 14 ms 5452 KB Output is correct
10 Correct 50 ms 5452 KB Output is correct
11 Correct 2 ms 5452 KB Output is correct
12 Correct 3 ms 5452 KB Output is correct
13 Correct 25 ms 5452 KB Output is correct
14 Correct 2 ms 5452 KB Output is correct
15 Correct 70 ms 5580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5580 KB Output is correct
2 Correct 2 ms 5580 KB Output is correct
3 Correct 2 ms 5580 KB Output is correct
4 Correct 2 ms 5580 KB Output is correct
5 Correct 3 ms 5580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5580 KB Output is correct
2 Correct 2 ms 5580 KB Output is correct
3 Correct 2 ms 5580 KB Output is correct
4 Correct 3 ms 5580 KB Output is correct
5 Correct 3 ms 5580 KB Output is correct
6 Correct 3 ms 5580 KB Output is correct
7 Correct 2 ms 5580 KB Output is correct
8 Correct 3 ms 5580 KB Output is correct
9 Correct 3 ms 5580 KB Output is correct
10 Correct 4 ms 5580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5580 KB Output is correct
2 Correct 2 ms 5580 KB Output is correct
3 Correct 2 ms 5580 KB Output is correct
4 Correct 2 ms 5580 KB Output is correct
5 Correct 3 ms 5580 KB Output is correct
6 Correct 3 ms 5580 KB Output is correct
7 Correct 3 ms 5580 KB Output is correct
8 Correct 3 ms 5580 KB Output is correct
9 Correct 4 ms 5580 KB Output is correct
10 Correct 3 ms 5580 KB Output is correct
11 Correct 14 ms 5580 KB Output is correct
12 Correct 15 ms 5580 KB Output is correct
13 Correct 25 ms 5580 KB Output is correct
14 Correct 18 ms 5580 KB Output is correct
15 Correct 33 ms 5580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5580 KB Output is correct
2 Correct 3 ms 5580 KB Output is correct
3 Correct 2 ms 5580 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5580 KB Output is correct
2 Correct 2 ms 5580 KB Output is correct
3 Correct 2 ms 5580 KB Output is correct
4 Correct 3 ms 5580 KB Output is correct
5 Correct 2 ms 5580 KB Output is correct
6 Correct 3 ms 5580 KB Output is correct
7 Incorrect 2 ms 5580 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5580 KB Output is correct
2 Correct 3 ms 5580 KB Output is correct
3 Correct 2 ms 5580 KB Output is correct
4 Correct 3 ms 5580 KB Output is correct
5 Correct 3 ms 5580 KB Output is correct
6 Correct 2 ms 5580 KB Output is correct
7 Incorrect 3 ms 5580 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5580 KB Output is correct
2 Correct 3 ms 5580 KB Output is correct
3 Correct 2 ms 5580 KB Output is correct
4 Correct 2 ms 5580 KB Output is correct
5 Correct 3 ms 5580 KB Output is correct
6 Correct 3 ms 5580 KB Output is correct
7 Incorrect 2 ms 5580 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -