Cod sursa(job #3324147)

Utilizator Dia3141Costea Diana Stefania Dia3141 Data 21 noiembrie 2025 12:19:05
Problema NextSeq Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.29 kb
#include <fstream>
#include <algorithm>
#define nmax (int)(1e4+1)
using namespace std;
ifstream cin("nextseq.in");
ofstream cout("nextseq.out");
int n,m,p,v[nmax],a[nmax],b[nmax],sol;
int cb(int x){
    int st=1,dr=n;
    while(st<=dr){
        int mid=(st+dr)/2;
        if(v[mid]==x)
            return mid;
        else if(v[mid]>x)
            dr=mid-1;
        else
            st=mid+1;
    }
    return 0;
}
bool verif(){
    if(m<p)
        return 1;
    if(m>p)
        return 0;
    for(int i=1;i<=m;i++)
        if(a[i]<b[i])
            return 1;
        else if(a[i]>b[i])
            return 0;
    return 0;
}
void next(){
    for(int i=m;i>0;i--)
        if(a[i]==n)
            a[i]=1;
        else{
            a[i]++;
            return;
        }
    /// nu am gasit nimic => trec la un sir cu mai multe valori
    m++;
    for(int i=1;i<=m;i++)
        a[i]=1;
}
int main()
{
    cin>>n>>m>>p;
    for(int i=1;i<=n;i++)
        cin>>v[i];
    sort(v+1,v+n+1);
    for(int i=1;i<=m;i++){
        cin>>a[i];
        a[i]=cb(a[i]);
    }
    for(int i=1;i<=p;i++){
        cin>>b[i];
        b[i]=cb(b[i]);
    }
    bool ok=verif();
    while(ok){
        sol++;
        next();
        ok=verif();
    }
    cout<<sol-1;
    return 0;
}