답안 #155048

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
155048 2019-09-26T04:56:55 Z junodeveloper 곤돌라 (IOI14_gondola) C++14
60 / 100
19 ms 2040 KB
#include "gondola.h"
#include <bits/stdc++.h>
#define all(x) (x).begin(),(x).end()
#define sz(x) (int)x.size()
#define fi first
#define se second
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
const int mod=1e9+9;

int valid(int n, int inputSeq[]) {
	int i;
	vector<bool> chk(250005,false);
	for(i=0;i<n;i++) {
		if(chk[inputSeq[i]]) return 0;
		chk[inputSeq[i]]=true;
	}
	int p=-1,t;
	for(i=0;i<n;i++) {
		if(inputSeq[i]<=n) {
			t=(i-inputSeq[i]+1+n)%n;
			if(p!=-1&&t!=p) return 0;
			p=t;
		}
	}
	return 1;
}

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

int replacement(int n, int gondolaSeq[], int replacementSeq[]) {
	int i,j,p=0;
	for(i=0;i<n;i++) {
		if(gondolaSeq[i]<=n) {
			p=(i-gondolaSeq[i]+1+n)%n;
			break;
		}
	}
	vector<pii> v;
	for(i=0;i<n;i++) {
		if(gondolaSeq[i]>n) {
			v.push_back(make_pair(gondolaSeq[i],i));
		}
	}
	sort(all(v));
	int cur=n+1,top=0;
	for(i=0;i<sz(v);i++) {
		if(v[i].se>=p) j=v[i].se-p+1;
		else j=n-p+v[i].se+1;
		replacementSeq[top++]=j;
		while(cur<v[i].fi) replacementSeq[top++]=cur++;
	}
	return top;
}

//----------------------
int modpow(int a,int n) {
	int r=1,b=a;
	while(n>0) {
		if(n&1) r=(ll)r*b%mod;
		b=(ll)b*b%mod;
		n>>=1;
	}
	return r;
}
int countReplacement(int n, int inputSeq[]) {
	if(!valid(n,inputSeq)) return 0;
	vector<int> v;
	int i;
	for(i=0;i<n;i++) {
		if(inputSeq[i]>n) v.push_back(inputSeq[i]);
	}
	if(v.empty()) return 1;
	v.push_back(n);
	sort(all(v));
	int res=1;
	for(i=0;i+1<sz(v);i++) {
		res=(ll)res*modpow(sz(v)-i-1,v[i+1]-v[i]-1)%mod;
	}
	if(sz(v)==n+1) {
		res=(ll)res*n%mod;
	}
	return res;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 380 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 380 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 7 ms 632 KB Output is correct
7 Correct 13 ms 1272 KB Output is correct
8 Correct 11 ms 1020 KB Output is correct
9 Correct 5 ms 504 KB Output is correct
10 Correct 13 ms 1116 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 380 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 380 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 7 ms 760 KB Output is correct
7 Correct 14 ms 1144 KB Output is correct
8 Correct 11 ms 1016 KB Output is correct
9 Correct 5 ms 504 KB Output is correct
10 Correct 13 ms 1144 KB Output is correct
11 Correct 2 ms 380 KB Output is correct
12 Correct 2 ms 376 KB Output is correct
13 Correct 8 ms 760 KB Output is correct
14 Correct 2 ms 376 KB Output is correct
15 Correct 14 ms 1144 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 256 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 252 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Incorrect 2 ms 376 KB Output isn't correct
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 256 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 256 KB Output is correct
6 Correct 2 ms 256 KB Output is correct
7 Incorrect 2 ms 376 KB Output isn't correct
8 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 380 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 376 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 464 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 19 ms 1528 KB Output is correct
10 Correct 16 ms 1272 KB Output is correct
11 Correct 7 ms 760 KB Output is correct
12 Correct 9 ms 808 KB Output is correct
13 Correct 4 ms 504 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 2 ms 404 KB Output is correct
2 Correct 2 ms 376 KB Output is correct
3 Correct 2 ms 376 KB Output is correct
4 Correct 2 ms 376 KB Output is correct
5 Correct 2 ms 376 KB Output is correct
6 Correct 2 ms 376 KB Output is correct
7 Correct 2 ms 376 KB Output is correct
8 Correct 2 ms 376 KB Output is correct
9 Correct 19 ms 1528 KB Output is correct
10 Correct 16 ms 1272 KB Output is correct
11 Correct 7 ms 884 KB Output is correct
12 Correct 9 ms 888 KB Output is correct
13 Correct 3 ms 376 KB Output is correct
14 Runtime error 17 ms 2040 KB Execution killed with signal 11 (could be triggered by violating memory limits)
15 Halted 0 ms 0 KB -