Pagini recente » Cod sursa (job #114297) | Cod sursa (job #1436161) | Echipa infoarena | Cod sursa (job #1569658) | Cod sursa (job #1569437)
#include <stdio.h>
#include <stdlib.h>
#define MAXN 100001
int v[MAXN], p[MAXN], q[MAXN];
int main(){
FILE*fin=fopen("scmax.in", "r");
FILE*fout=fopen("scmax.out", "w");
int n, i, j, mij, st, dr, max, e, poz;
fscanf(fin, "%d", &n);
for(i=1; i<=n; i++)
fscanf(fin, "%d", &v[i]);
p[1]=1;
q[1]=1;
j=2;
max=0;
for(i=2; i<=n; i++){
if(v[i]>q[j-1]){
q[j]=v[i];
p[j]=j;
j++;
if(j>max)
max=j;
}
else{
dr=j-1;
st=1;
mij=(dr+st)/2;
while(st<=dr){
if(q[mij]>=v[i]){
e=q[mij];
poz=mij;
dr=mij-1;
}
else
st=mij+1;
}
q[poz]=v[i];
j=i;
}
}
fprintf(fout, "%d", max);
fclose(fin);
fclose(fout);
return 0;
}
//sort(v, v+n, cmp);
//bool cmp(elev a, elev b){
// if(v[a].med>v[b].med)
// return false;
// else
// return true;
//}