Cod sursa(job #1265849)

Utilizator sddddgjdZloteanu Anastasia sddddgjd Data 17 noiembrie 2014 20:55:57
Problema Cutii Scor 0
Compilator c Status done
Runda Arhiva de probleme Marime 0.93 kb
#include<stdio.h>
#define N 100000
#define MOD 20011
int v[N],prim[N],next[N],ultim[N],x[N];
int bsearch(int val,int st,int dr){
    int mij=(st+dr)/2;
    while(st<dr){
        mij=(st+dr)/2;
        if(v[mij]>=val)
            st=mij+1;
        else
            dr=mij;
    }
    return st;
}
int main(){
    FILE *fin,*fout;
    fin=fopen("cuvinte.in","r");
    fout=fopen("cuvinte.out","w");
    int n,k,nrc=0;
    fscanf(fin,"%d%d",&n,&k);
    int i;
    for(i=0;i<n;i++)
        v[i]=-1;
    for(i=0;i<n;i++){
        fscanf(fin,"%d",&x[i]);
        int rez=bsearch(x[i],0,nrc);
        if(v[rez]==-1)
            prim[rez]=ultim[rez]=i;
        else{
            next[ultim[rez]]=i;
            ultim[rez]=i;
        }
        v[rez]=x[i];
        if(rez==nrc)
            nrc++;
    }
    int p=v[0];
    while(p!=ultim[0]){
        fprintf(fout,"%d ",x[p]);
        p=next[p];
    }
    return 0;
}