Pagini recente » Cod sursa (job #883340) | Cod sursa (job #2019099) | Cod sursa (job #1631514) | Cod sursa (job #731569) | Cod sursa (job #463963)
Cod sursa(job #463963)
#include<fstream.h>
//using namespace std;
int n,m,p,x[10001]/*0*/,a[1001],b[1001],norm[1002];
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(i=1;i<=m;i++)
in>>a[i];
for(i=1;i<=p;i++)
in>>b[i];
quicksort(1,n);
for(i=0;i<n;i++)
norm[x[i+1]]=i;
for(i=1;i<=m;i++)
a[i]=norm[a[i]];
for(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(i=elem+1;i<=m;i++)
a[i]=0;}
else
{m++;contor++;
for(i=1;i<=m;i++)
a[i]=0;}}
out<<contor-1;
return 0;}