This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <stdio.h>
#include <assert.h>
#include "gondola.h"
int poz[100010];
bool e[250010];
int valid(int n, int inputSeq[])
{
for(int i=0;i<=n;++i)
{
if(e[inputSeq[i]])
return 0;
e[inputSeq[i]]=true;
if(1<=inputSeq[i]&&inputSeq[i]<=n)
poz[inputSeq[i]]=i+1;
}
int dif=-1;
for(int i=1;i<=n;++i)
if(poz[i])
{
int val;
if(i<=poz[i])
val=poz[i]-i;
else
val=poz[i]+n-i;
if(dif==-1)
dif=val;
else if(dif!=val)
return 0;
}
return 1;
}
//----------------------
int ago[100010];
int truevalue(int val,int n)
{
while(val<=0)
val+=n;
return val;
}
int goodshift(int n,int gondolaSeq[])
{
int ls=-1;
for(int i=0;i<n;++i)
if(1<=gondolaSeq[i]&&gondolaSeq[i]<=n)
{
if(gondolaSeq[i]<=i+1)
ls=i+1-gondolaSeq[i];
else
ls=i+1+n-gondolaSeq[i];
break;
}
if(ls==-1)
{
for(int i=0;i<n;++i)
ago[i+1]=gondolaSeq[i];
return 0;
}
for(int i=0;i<n;++i)
ago[truevalue(i+1-ls,n)]=gondolaSeq[i];
return 1;
}
int pozval[250010],valac;
int replacement(int n, int gondolaSeq[], int replacementSeq[])
{
goodshift(n,gondolaSeq);
for(int i=1;i<=n;++i)
pozval[ago[i]]=i;
valac=n;
for(int i=1;i<=n;++i)
ago[i]=i;
for(int i=n+1;i<=250000;++i)
{
if(pozval[i]!=0)
{
while(valac<i)
{
replacementSeq[valac-n]=ago[pozval[i]];
++valac;
ago[pozval[i]]=valac;
}
}
}
return valac-n;
}
//----------------------
int countReplacement(int n, int inputSeq[])
{
if(valid(n,inputSeq)==0)
return 0;
return -3;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |