Submission #7302

# Submission time Handle Problem Language Result Execution time Memory
7302 2014-07-30T06:25:59 Z gs13068 Gondola (IOI14_gondola) C++
55 / 100
20 ms 4408 KB
#include "gondola.h"
#include <algorithm>

#define MOD 1000000009

int arr[250001];
int now[250001];

int valid(int n, int inputSeq[])
{
  int i,j;
  for(i=0;i<n;i++)if(inputSeq[i]<=n)break;
  if(i<n)for(j=0;j<n;j++)if(inputSeq[i]<=n&&(inputSeq[j]+i)%n!=(inputSeq[i]+j)%n)return 0;
  std::sort(inputSeq,inputSeq+n);
  for(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=1;i<=250000;i++)arr[i]=-1;
  for(i=0;i<n;i++)arr[gondolaSeq[i]]=i;
  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]]:now[arr[j]];
    now[arr[i]>=0?arr[i]:arr[j]]=i;
  }
  return j-n;
}

int f(int x,int y)
{
  if(y==0)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 r;
}
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4408 KB Output is correct
2 Correct 0 ms 4408 KB Output is correct
3 Correct 0 ms 4408 KB Output is correct
4 Correct 0 ms 4408 KB Output is correct
5 Correct 0 ms 4408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4408 KB Output is correct
2 Correct 0 ms 4408 KB Output is correct
3 Correct 0 ms 4408 KB Output is correct
4 Correct 0 ms 4408 KB Output is correct
5 Correct 0 ms 4408 KB Output is correct
6 Correct 8 ms 4408 KB Output is correct
7 Correct 4 ms 4408 KB Output is correct
8 Correct 16 ms 4408 KB Output is correct
9 Correct 4 ms 4408 KB Output is correct
10 Correct 20 ms 4408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4408 KB Output is correct
2 Correct 0 ms 4408 KB Output is correct
3 Correct 0 ms 4408 KB Output is correct
4 Correct 0 ms 4408 KB Output is correct
5 Correct 0 ms 4408 KB Output is correct
6 Correct 4 ms 4408 KB Output is correct
7 Correct 8 ms 4408 KB Output is correct
8 Correct 20 ms 4408 KB Output is correct
9 Correct 4 ms 4408 KB Output is correct
10 Correct 20 ms 4408 KB Output is correct
11 Correct 0 ms 4408 KB Output is correct
12 Correct 0 ms 4408 KB Output is correct
13 Correct 0 ms 4408 KB Output is correct
14 Correct 0 ms 4408 KB Output is correct
15 Correct 12 ms 4408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4408 KB Output is correct
2 Correct 0 ms 4408 KB Output is correct
3 Correct 0 ms 4408 KB Output is correct
4 Correct 0 ms 4408 KB Output is correct
5 Correct 0 ms 4408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4408 KB Output is correct
2 Correct 0 ms 4408 KB Output is correct
3 Correct 0 ms 4408 KB Output is correct
4 Correct 0 ms 4408 KB Output is correct
5 Correct 0 ms 4408 KB Output is correct
6 Correct 0 ms 4408 KB Output is correct
7 Correct 0 ms 4408 KB Output is correct
8 Correct 0 ms 4408 KB Output is correct
9 Correct 0 ms 4408 KB Output is correct
10 Correct 0 ms 4408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 4408 KB Output is correct
2 Correct 0 ms 4408 KB Output is correct
3 Correct 0 ms 4408 KB Output is correct
4 Correct 0 ms 4408 KB Output is correct
5 Correct 0 ms 4408 KB Output is correct
6 Correct 0 ms 4408 KB Output is correct
7 Correct 0 ms 4408 KB Output is correct
8 Correct 0 ms 4408 KB Output is correct
9 Correct 0 ms 4408 KB Output is correct
10 Correct 0 ms 4408 KB Output is correct
11 Correct 8 ms 4408 KB Output is correct
12 Correct 8 ms 4408 KB Output is correct
13 Correct 8 ms 4408 KB Output is correct
14 Correct 12 ms 4408 KB Output is correct
15 Correct 20 ms 4408 KB Output is correct
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 4408 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 4408 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 4408 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 4408 KB Output isn't correct
2 Halted 0 ms 0 KB -