Pagini recente » Cod sursa (job #1735819) | Cod sursa (job #2154304) | Cod sursa (job #878184) | Cod sursa (job #1380029) | Cod sursa (job #349053)
Cod sursa(job #349053)
#include<fstream>
using namespace std;
int n,m,p,x[100001],a[10001],b[10001],norm[10002];
int partition(int l,int r)
{int piv=x[r];
int i=l-1;
for(int j=l;j<r;j++) {if(x[j]<piv) {i++;int aux=x[j];x[j]=x[i];x[i]=aux;}}
int aux2=x[r];x[r]=x[i+1];x[i+1]=aux2;
return i+1;
}
void quicksort(int l,int r)
{if(l<r)
{int q=partition(l,r);
quicksort(l,q-1);
quicksort(q+1,r);
}
}
int compare(int a[],int b[])
{for(int i=1;i<=p;i++)
if(a[i]!=b[i]) return 0;
return 1;
}
int main()
{ifstream in("nextseq.in");
ofstream out("nextseq.out");
in>>n>>m>>p;
for(int i=1;i<=n;i++) in>>x[i];
for(int i=1;i<=m;i++) in>>a[i];
for(int i=1;i<=p;i++) in>>b[i];
quicksort(1,n);
for(int i=0;i<n;i++) {norm[x[i+1]]=i;}
for(int i=1;i<=m;i++) {a[i]=norm[a[i]];}
for(int i=1;i<=p;i++) b[i]=norm[b[i]];
int contor=0;
while(compare(a,b)==0)
{int elem=m;
while(a[elem]==n-1) elem--;
if(elem!=0) {a[elem]++;contor++;for(int i=elem+1;i<=m;i++) a[i]=0;}
else {m++;contor++;for(int i=1;i<=m;i++) a[i]=0;}
}
out<<contor-1;
return 0;}