Cod sursa(job #1592759)

Utilizator timicsIoana Tamas timics Data 7 februarie 2016 22:16:17
Problema NextSeq Scor 95
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.06 kb
#include<stdio.h>
#include<algorithm>
#include<math.h>
#include<iostream>
using namespace std;
int a[10010],b[10010],c[10010];
int ret,x,N,M,P;

int caut(int x) {
    int st = 1;
    int dr = N;
    while(st<=dr) {
        int mij = (st+dr)/2;
        if(c[mij] > x) dr = mij-1;
        if(c[mij] < x) st = mij+1;
        if(c[mij] == x) return mij;
    }
    while(true);
    return -1;
}
  
void scadere() {
    int carry = 0;
    for(int i=1;i<=P;++i) {
        int x = b[i] - a[i] + carry;
        b[i] = (x+N) % N;
        carry = (x+N) / N-1;
    }
}

int main() {
//    freopen("input.in","r",stdin);
    freopen("nextseq.in","r",stdin);
    freopen("nextseq.out","w",stdout);
    scanf("%d%d%d",&N,&M,&P);    
    for(int i=1;i<=N;++i) {
        scanf("%d",&c[i]);
    }
    sort(c+1,c+N+1);
    for(int i=1;i<=M;++i) {
        scanf("%d",&x);
        a[M+1-i]=caut(x);
    }
    for(int i=1;i<=P;++i) {
        scanf("%d",&x);
        b[P+1-i]=caut(x);
    }
    scadere();
    for(int i=P;i>=1;--i) {
        ret = ret*N + b[i];
    }
    printf("%d",ret-1);
    return 0;
}