Pagini recente » Cod sursa (job #1086759) | Cod sursa (job #2299174) | Cod sursa (job #2728235) | Cod sursa (job #44571) | Cod sursa (job #2939147)
#include<fstream>
#include<vector>
using namespace std;
const int NMAX = 1e5 + 2;
vector<int> info(NMAX,1e9),v(NMAX);
//d[i] = elementul la care se termina un subsir de lungime i
int bin(int val,int st,int dr)
{
int ans = 0;
while(st <= dr)
{
int mid = st + (dr - st) / 2;
if(info[mid] > val)
{
ans = mid;
dr = mid - 1;
}
else
{
st = mid + 1;
}
}
return ans;
}
int main()
{
ifstream cin("scmax.in");
ofstream cout("scmax.out");
int n; cin >> n;
info[0] = -2e9;
for(int i = 1; i <= n ; i++)
{
cin >> v[i];
int ant = bin(v[i],0,n);
if(info[ant - 1] < v[i] && info[ant] > v[i])
{
info[ant] = v[i];
}
}
int ans = 1;
for(int l = 1; l <= n ; l++)
{
if(info[l] != 1e9)
{
ans = l;
}
}
cout << (ans);
}