Pagini recente » Cod sursa (job #2287152) | Cod sursa (job #1058630) | Cod sursa (job #2279049) | Cod sursa (job #1164038) | Cod sursa (job #2760472)
#include <fstream>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int v[1005] , N , a[1005] , k;
int QuickSearch(int i , int j , int number) {
if(i <= j) {
int 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(int i = 1 ; i <= N ; i++)
fin >> v[i];
a[1] = v[1] ;
k = 1 ;
for(int i = 2 ; i <= N ; i++) {
int 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],v[i]);
if(p+1 > k)
k = p + 1;
}
else
a[1] = min(a[1],v[i]) ;
}
fout << k ;
return 0;
}