Cod sursa(job #2136508)

Utilizator ovidius11Stiriu Ovidius ovidius11 Data 19 februarie 2018 22:40:01
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.85 kb
#include<cstdio>
#include<algorithm>
using namespace std;
int v[10005],cnt[10005],num1[10005],num2[10005];
int add(int nr){
int i;
for(i=1;i<=num1[0];i++)
if (num1[i]!=nr)
break;
if (i==num1[0]+1)
num1[0]++;
int poz=i;
num1[poz]++;
for(i=1;i<poz;i++)
num1[i]=1;}
int check(){
int i;
if (num1[0]!=num2[0])
return 0;
for(i=1;i<=num1[0];i++)
if (num1[i]!=num2[i])
return 0;
return 1;}
int main(){
freopen("nextseq.in","r",stdin);
freopen("nextseq.out","w",stdout);
int n,m,p,i,cn=0;
scanf("%d%d%d",&n,&m,&p);
for(i=1;i<=n;i++)
scanf("%d",&v[i]);
sort(v+1,v+n+1);
for(i=1;i<=n;i++)
cnt[v[i]]=i;
for(i=1;i<=m;i++)
scanf("%d",&num1[m-i+1]),num1[m-i+1]=cnt[num1[m-i+1]];
for(i=1;i<=p;i++)
scanf("%d",&num2[p-i+1]),num2[p-i+1]=cnt[num2[p-i+1]];
num1[0]=m;
num2[0]=p;
add(n);
while(!check()){
cn++;
add(n);}
printf("%d\n",cn);
return 0;}