답안 #159770

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
159770 2019-10-24T13:51:12 Z maximath_1 곤돌라 (IOI14_gondola) C++11
컴파일 오류
0 ms 0 KB
#include "gondola.h"
#include<bits/stdc++.h>
using namespace std;

int valid(int n, int inputSeq[]){
	map<int, bool>mp;
	for(int i=0; i<n; i++){
		if(!mp[inputSeq[i]])
			mp[inputSeq[i]]=true;
		else return 0;
	}
	int fi=-1;
	for(int i=0; i<n; i++){
		if(inputSeq[i]<=n){
			if(fi==-1) fi=i;
			else{
				int check=i+inputSeq[fi]-fi;
				check%=n;
				if(check==0) check=n;
				if(check!=inputSeq[i]) return 0;
			}
		}
	}
	return 1;
}

int replacement(int n, int gondolaSeq[], int replacementSeq[]){
	int rotate=0;
	for(int i=0; i<n; i++){
		if(gondolaSeq[i]<=n) rotate=(n+gondolaSeq[i]-i-1)%n;
	}
	int now;
	priority_queue<pair<int, int>, vector<pair<int, int> >, greater<pair<int, int> > >pq;
	for(int i=0; i<n; i++){
		now=gondolaSeq[(n+i-rotate)%n];
		if(now>n) pq.push({now, i+1});
	}
	int idx=0, cnt=n+1;
	while(!pq.empty()){
		int replacementGondola=pq.top().first;
		int idxc=pq.top().second;
		pq.pop();
		replacementSeq[idx++]=idxc;
		for(int i=cnt; i<replacementGondola; i++){
			replacementSeq[idx++]=i;
		}
		cnt=replacementGondola+1;
	}
	return idx;
}

const long long mod=1000000009;
long long mdx(int b, int e){
	long long res=1ll; b%=mod;
	while(e){
		if(e&1) res=(res*b)%mod;
		e>>=1; b=(b*b)%mod;
	}
	return res;
}
int countReplacement(int n, int inputSeq[]){
	if(!valid(n, inputSeq)) return 0;
	int more[100069]={};
	int idxcnt=0;
	for(int i=0; i<n; i++)
		if(inputSeq[i]>n) more[idxcnt++]=inputSeq[i];
	long long res=1ll;
	if(idxcnt==n) res=(long long)n;
	if(idxcnt==0) return 1;
	int cnt=idxcnt, last=n;
	sort(more, more+n);
	for(int i=0; i<idxcnt; i++){
		res=(res*pow(cnt, more[i]-last-1))%mod;
		last=more[i]; cnt--;
	}
	return res;
}

Compilation message

gondola.cpp: In function 'int countReplacement(int, int*)':
gondola.cpp:73:37: error: invalid operands of types '__gnu_cxx::__promote_2<int, int, double, double>::__type {aka double}' and 'const long long int' to binary 'operator%'
   res=(res*pow(cnt, more[i]-last-1))%mod;
       ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~