Submission #73520

# Submission time Handle Problem Language Result Execution time Memory
73520 2018-08-28T11:28:56 Z TuGSGeReL Gondola (IOI14_gondola) C++14
60 / 100
101 ms 5612 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();
}
int 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=(s*o)%mod;
			}
			o=(o*o)%mod;
			u/=2;
		}
		ans=(ans*s)%mod;
		prev=vc[i]+1;
	}
	if(!boo) ans=(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 4 ms 464 KB Output is correct
3 Correct 2 ms 496 KB Output is correct
4 Correct 2 ms 500 KB Output is correct
5 Correct 2 ms 544 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 588 KB Output is correct
2 Correct 2 ms 596 KB Output is correct
3 Correct 2 ms 596 KB Output is correct
4 Correct 2 ms 728 KB Output is correct
5 Correct 3 ms 728 KB Output is correct
6 Correct 21 ms 2796 KB Output is correct
7 Correct 17 ms 2796 KB Output is correct
8 Correct 38 ms 4836 KB Output is correct
9 Correct 16 ms 4836 KB Output is correct
10 Correct 55 ms 5504 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5504 KB Output is correct
2 Correct 3 ms 5504 KB Output is correct
3 Correct 2 ms 5504 KB Output is correct
4 Correct 3 ms 5504 KB Output is correct
5 Correct 2 ms 5504 KB Output is correct
6 Correct 25 ms 5504 KB Output is correct
7 Correct 21 ms 5504 KB Output is correct
8 Correct 38 ms 5504 KB Output is correct
9 Correct 16 ms 5504 KB Output is correct
10 Correct 53 ms 5504 KB Output is correct
11 Correct 3 ms 5504 KB Output is correct
12 Correct 4 ms 5504 KB Output is correct
13 Correct 28 ms 5504 KB Output is correct
14 Correct 2 ms 5504 KB Output is correct
15 Correct 101 ms 5612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5612 KB Output is correct
2 Correct 2 ms 5612 KB Output is correct
3 Correct 2 ms 5612 KB Output is correct
4 Correct 2 ms 5612 KB Output is correct
5 Correct 2 ms 5612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5612 KB Output is correct
2 Correct 3 ms 5612 KB Output is correct
3 Correct 2 ms 5612 KB Output is correct
4 Correct 3 ms 5612 KB Output is correct
5 Correct 2 ms 5612 KB Output is correct
6 Correct 2 ms 5612 KB Output is correct
7 Correct 2 ms 5612 KB Output is correct
8 Correct 4 ms 5612 KB Output is correct
9 Correct 3 ms 5612 KB Output is correct
10 Correct 2 ms 5612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5612 KB Output is correct
2 Correct 2 ms 5612 KB Output is correct
3 Correct 2 ms 5612 KB Output is correct
4 Correct 2 ms 5612 KB Output is correct
5 Correct 2 ms 5612 KB Output is correct
6 Correct 2 ms 5612 KB Output is correct
7 Correct 2 ms 5612 KB Output is correct
8 Correct 3 ms 5612 KB Output is correct
9 Correct 4 ms 5612 KB Output is correct
10 Correct 4 ms 5612 KB Output is correct
11 Correct 17 ms 5612 KB Output is correct
12 Correct 16 ms 5612 KB Output is correct
13 Correct 24 ms 5612 KB Output is correct
14 Correct 15 ms 5612 KB Output is correct
15 Correct 41 ms 5612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5612 KB Output is correct
2 Correct 3 ms 5612 KB Output is correct
3 Correct 3 ms 5612 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5612 KB Output is correct
2 Correct 2 ms 5612 KB Output is correct
3 Correct 3 ms 5612 KB Output is correct
4 Correct 2 ms 5612 KB Output is correct
5 Correct 2 ms 5612 KB Output is correct
6 Correct 2 ms 5612 KB Output is correct
7 Incorrect 2 ms 5612 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 3 ms 5612 KB Output is correct
2 Correct 3 ms 5612 KB Output is correct
3 Correct 3 ms 5612 KB Output is correct
4 Correct 2 ms 5612 KB Output is correct
5 Correct 2 ms 5612 KB Output is correct
6 Correct 2 ms 5612 KB Output is correct
7 Incorrect 2 ms 5612 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 2 ms 5612 KB Output is correct
2 Correct 3 ms 5612 KB Output is correct
3 Correct 2 ms 5612 KB Output is correct
4 Correct 3 ms 5612 KB Output is correct
5 Correct 2 ms 5612 KB Output is correct
6 Correct 2 ms 5612 KB Output is correct
7 Incorrect 2 ms 5612 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -