Submission #625904

# Submission time Handle Problem Language Result Execution time Memory
625904 2022-08-11T01:29:05 Z as111 Gondola (IOI14_gondola) C++14
100 / 100
20 ms 2724 KB
#include "gondola.h"
#include <iostream>
#include <set>
#include <algorithm>
#define MOD 1000000009
 
int arr[250001];
int now[250001];

 
using namespace std;
 
int valid(int n, int inputSeq[]) {
	int start = 0;
	for (int i = 0; i < n; i++) {
		if (inputSeq[i] <= n) {
			start = i;
			break;
		}
	}
	if (start < n) {
		for (int j = 0; j < n; j++) {
			if (inputSeq[j] <= n && (inputSeq[j] + start) % n != (inputSeq[start] + j) % n) return 0;
		}
	}
	sort(inputSeq, inputSeq + n);
	for (int i = 1; i < n; i++) {
		if (inputSeq[i - 1] == inputSeq[i]) {
			return 0;
		}
	}
	return 1;
}
int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
  int i,j;
  for(i=0;i<n;i++)arr[gondolaSeq[i]]=i+1;
  for(i=0;i<n;i++)if(gondolaSeq[i]<=n)break;
  for(j=0;j<n;j++)now[j]=i<n?(gondolaSeq[i]+j-i+n-1)%n+1:j+1;
  j=0;
  for(i=0;i<n;i++)if(gondolaSeq[i]>j)j=gondolaSeq[i];
  for(i=n+1;i<=j;i++)
  {
    replacementSeq[i-n-1]=arr[i]>0?now[arr[i]-1]:now[arr[j]-1];
    now[arr[i]>0?arr[i]-1:arr[j]-1]=i;
  }
  return j-n;
}
 
int f(int x,int y)
{
  if(y==0||x==1)return 1;
  if(y&1)return 1LL*x*f(x,y-1)%MOD;
  x=f(x,y>>1);
  return 1LL*x*x%MOD;
}
 
int countReplacement(int n, int inputSeq[])
{
  if(!valid(n,inputSeq))return 0;
  int i,r=1;
  std::sort(inputSeq,inputSeq+n);
  for(i=0;i<n;i++)
  {
    if(inputSeq[i]<=n)continue;
    r=1LL*r*f(n-i,inputSeq[i]-(i>0?std::max(inputSeq[i-1],n):n)-1)%MOD;
  }
  return 1LL*r*(inputSeq[0]>n?n:1)%MOD;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 0 ms 260 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 6 ms 340 KB Output is correct
7 Correct 8 ms 596 KB Output is correct
8 Correct 10 ms 468 KB Output is correct
9 Correct 4 ms 340 KB Output is correct
10 Correct 13 ms 636 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 212 KB Output is correct
6 Correct 6 ms 340 KB Output is correct
7 Correct 8 ms 592 KB Output is correct
8 Correct 9 ms 468 KB Output is correct
9 Correct 4 ms 340 KB Output is correct
10 Correct 13 ms 628 KB Output is correct
11 Correct 0 ms 212 KB Output is correct
12 Correct 0 ms 212 KB Output is correct
13 Correct 3 ms 340 KB Output is correct
14 Correct 0 ms 212 KB Output is correct
15 Correct 7 ms 596 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 432 KB Output is correct
3 Correct 0 ms 312 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 1 ms 212 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 308 KB Output is correct
10 Correct 1 ms 340 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 308 KB Output is correct
4 Correct 0 ms 212 KB Output is correct
5 Correct 1 ms 308 KB Output is correct
6 Correct 0 ms 312 KB Output is correct
7 Correct 1 ms 340 KB Output is correct
8 Correct 1 ms 340 KB Output is correct
9 Correct 1 ms 340 KB Output is correct
10 Correct 2 ms 340 KB Output is correct
11 Correct 8 ms 1620 KB Output is correct
12 Correct 11 ms 1976 KB Output is correct
13 Correct 10 ms 1876 KB Output is correct
14 Correct 8 ms 1644 KB Output is correct
15 Correct 17 ms 2724 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 1 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 0 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 1 ms 212 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 1 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 304 KB Output is correct
6 Correct 1 ms 304 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 15 ms 1080 KB Output is correct
10 Correct 11 ms 940 KB Output is correct
11 Correct 4 ms 468 KB Output is correct
12 Correct 6 ms 596 KB Output is correct
13 Correct 1 ms 320 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 212 KB Output is correct
2 Correct 0 ms 212 KB Output is correct
3 Correct 0 ms 212 KB Output is correct
4 Correct 1 ms 212 KB Output is correct
5 Correct 0 ms 212 KB Output is correct
6 Correct 1 ms 212 KB Output is correct
7 Correct 0 ms 212 KB Output is correct
8 Correct 0 ms 212 KB Output is correct
9 Correct 14 ms 980 KB Output is correct
10 Correct 13 ms 832 KB Output is correct
11 Correct 4 ms 452 KB Output is correct
12 Correct 5 ms 596 KB Output is correct
13 Correct 2 ms 360 KB Output is correct
14 Correct 17 ms 1452 KB Output is correct
15 Correct 20 ms 1688 KB Output is correct
16 Correct 4 ms 468 KB Output is correct
17 Correct 13 ms 1108 KB Output is correct
18 Correct 10 ms 704 KB Output is correct