Cod sursa(job #463963)

Utilizator zloteanu.adrianzloteanu adrian nichita zloteanu.adrian Data 18 iunie 2010 11:46:49
Problema NextSeq Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#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;}