Pagini recente » Cod sursa (job #2184200) | Cod sursa (job #2254771) | Cod sursa (job #2040129) | Cod sursa (job #1449353) | Cod sursa (job #2760474)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
long v[100005] , N , a[100005] , k;
long QuickSearch(long i , long j , long number) {
if(i <= j) {
long mid = (i+j)/2 ;
if((a[mid] < number && (a[mid+1] > number || a[mid+1]==0)))
return mid ;
else
if(a[mid] > number)
return QuickSearch(i,mid-1,number);
else
return QuickSearch(mid+1,j,number);
}
return -1 ;
}
int main()
{ fin >> N ;
for(long i = 1 ; i <= N ; i++)
fin >> v[i];
a[1] = v[1] ;
k = 1 ;
for(long i = 2 ; i <= N ; i++) {
long p = QuickSearch(1,k,v[i]) ;
if(p > 0) {
if(a[p+1] == 0)
a[p+1] = v[i];
else
a[p+1] = min(a[p+1],v[i]);
if(p+1 > k)
k = p + 1;
}
else
a[1] = min(a[1],v[i]) ;
}
fout << k ;
return 0;
}