Submission #7296

#TimeUsernameProblemLanguageResultExecution timeMemory
7296gs13068Gondola (IOI14_gondola)C++98
25 / 100
16 ms4408 KiB
#include "gondola.h"
#include <algorithm>

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]=(gondolaSeq[i]+j-i+n-1)%n+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[replacementSeq[i-n-1]]=i;
  }
  return j-n;
}

int countReplacement(int n, int inputSeq[])
{
  return -1;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...