Pagini recente » Istoria paginii utilizator/izavilcu | Cod sursa (job #553940) | Cod sursa (job #1265849)
#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;
}