Cod sursa(job #1415815)

Utilizator robx12lnLinca Robert robx12ln Data 6 aprilie 2015 14:35:57
Problema NextSeq Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.23 kb
#include<fstream>
#include<algorithm>
#include<cstring>
using namespace std;
ifstream fin("nextseq.in");
ofstream fout("nextseq.out");
int f[10005],a[10005],b[10005],n,x,v[10005],i,nr,ok,aux;
void add(){
    int k=1,t=0;;
    for(i=1;i<=a[0];i++){
        a[i]+=k+t;
        if(a[i]>n){
            t=1;
            a[i]=1;
        }else{
            t=0;
        }
        k=0;
    }
    if(t!=0){
        a[++a[0]]=1;
    }
}
int vf(){
    if(a[0]<b[0]){
        return 1;
    }
    for(i=1;i<=b[0];i++){
        if(a[i]!=b[i]){
            return 1;
        }
    }
    return 0;
}
int main(){
    fin>>n>>a[0]>>b[0];
    for(i=1;i<=n;i++){
        fin>>v[i];
    }
    sort(v+1,v+n+1);
    for(i=1;i<=n;i++){
        f[v[i]]=i;
    }
    for(i=1;i<=a[0];i++){
        fin>>x;
        a[i]=f[x];
    }
    for(i=1;i<=a[0]/2;i++){
        aux=a[i];
        a[i]=a[a[0]-i+1];
        a[a[0]-i+1]=aux;
    }
    for(i=1;i<=b[0];i++){
        fin>>x;
        b[i]=f[x];
    }
    for(i=1;i<=b[0]/2;i++){
        aux=b[i];
        b[i]=b[b[0]-i+1];
        b[b[0]-i+1]=aux;
    }
    ok=1;
    while(ok){
        add();
        nr++;
        ok=vf();
    }
    fout<<nr-1;
    return 0;
}