Cod sursa(job #349053)

Utilizator Bogdan_CCebere Bogdan Bogdan_C Data 17 septembrie 2009 20:41:51
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.17 kb
#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;}