답안 #73521

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
73521 2018-08-28T11:31:10 Z TuGSGeReL 곤돌라 (IOI14_gondola) C++14
60 / 100
119 ms 5656 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=(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++){
          ~^~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 376 KB Output is correct
2 Correct 3 ms 376 KB Output is correct
3 Correct 3 ms 440 KB Output is correct
4 Correct 4 ms 492 KB Output is correct
5 Correct 3 ms 536 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 536 KB Output is correct
2 Correct 3 ms 536 KB Output is correct
3 Correct 3 ms 536 KB Output is correct
4 Correct 3 ms 544 KB Output is correct
5 Correct 3 ms 544 KB Output is correct
6 Correct 28 ms 2924 KB Output is correct
7 Correct 19 ms 2924 KB Output is correct
8 Correct 47 ms 4840 KB Output is correct
9 Correct 18 ms 4840 KB Output is correct
10 Correct 60 ms 5484 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 5484 KB Output is correct
2 Correct 3 ms 5484 KB Output is correct
3 Correct 3 ms 5484 KB Output is correct
4 Correct 3 ms 5484 KB Output is correct
5 Correct 4 ms 5484 KB Output is correct
6 Correct 28 ms 5484 KB Output is correct
7 Correct 19 ms 5484 KB Output is correct
8 Correct 45 ms 5484 KB Output is correct
9 Correct 17 ms 5484 KB Output is correct
10 Correct 52 ms 5484 KB Output is correct
11 Correct 2 ms 5484 KB Output is correct
12 Correct 3 ms 5484 KB Output is correct
13 Correct 40 ms 5484 KB Output is correct
14 Correct 4 ms 5484 KB Output is correct
15 Correct 119 ms 5656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 5656 KB Output is correct
2 Correct 3 ms 5656 KB Output is correct
3 Correct 4 ms 5656 KB Output is correct
4 Correct 2 ms 5656 KB Output is correct
5 Correct 3 ms 5656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 5656 KB Output is correct
2 Correct 4 ms 5656 KB Output is correct
3 Correct 3 ms 5656 KB Output is correct
4 Correct 2 ms 5656 KB Output is correct
5 Correct 3 ms 5656 KB Output is correct
6 Correct 3 ms 5656 KB Output is correct
7 Correct 3 ms 5656 KB Output is correct
8 Correct 4 ms 5656 KB Output is correct
9 Correct 4 ms 5656 KB Output is correct
10 Correct 5 ms 5656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 5656 KB Output is correct
2 Correct 3 ms 5656 KB Output is correct
3 Correct 0 ms 5656 KB Output is correct
4 Correct 3 ms 5656 KB Output is correct
5 Correct 3 ms 5656 KB Output is correct
6 Correct 3 ms 5656 KB Output is correct
7 Correct 4 ms 5656 KB Output is correct
8 Correct 5 ms 5656 KB Output is correct
9 Correct 4 ms 5656 KB Output is correct
10 Correct 4 ms 5656 KB Output is correct
11 Correct 25 ms 5656 KB Output is correct
12 Correct 21 ms 5656 KB Output is correct
13 Correct 32 ms 5656 KB Output is correct
14 Correct 20 ms 5656 KB Output is correct
15 Correct 51 ms 5656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 5656 KB Output is correct
2 Correct 3 ms 5656 KB Output is correct
3 Correct 2 ms 5656 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 5656 KB Output is correct
2 Correct 3 ms 5656 KB Output is correct
3 Correct 3 ms 5656 KB Output is correct
4 Correct 3 ms 5656 KB Output is correct
5 Correct 3 ms 5656 KB Output is correct
6 Correct 3 ms 5656 KB Output is correct
7 Incorrect 3 ms 5656 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 5656 KB Output is correct
2 Correct 2 ms 5656 KB Output is correct
3 Correct 4 ms 5656 KB Output is correct
4 Correct 3 ms 5656 KB Output is correct
5 Correct 3 ms 5656 KB Output is correct
6 Correct 3 ms 5656 KB Output is correct
7 Incorrect 2 ms 5656 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 3 ms 5656 KB Output is correct
2 Correct 2 ms 5656 KB Output is correct
3 Correct 3 ms 5656 KB Output is correct
4 Correct 3 ms 5656 KB Output is correct
5 Correct 2 ms 5656 KB Output is correct
6 Correct 5 ms 5656 KB Output is correct
7 Incorrect 3 ms 5656 KB Integer -841481820 violates the range [0, 1000000008]
8 Halted 0 ms 0 KB -