Pagini recente » Cod sursa (job #2441894) | Cod sursa (job #2729131) | Cod sursa (job #91739) | Cod sursa (job #615878) | Cod sursa (job #668022)
Cod sursa(job #668022)
#include<fstream>
#include<algorithm>
#include<vector>
#define NMAx 100100
using namespace std;
vector <int> v;
int n,best,A[NMAx],original[NMAx],sol[NMAx];
void normalize() {
int i;
vector <int>::iterator it;
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
for(i=0;i<n;i++) {
it=lower_bound(v.begin(),v.end(),A[i]);
A[i]=(int)(it-v.begin());
}
}
void citire() {
int i;
ifstream in("scmax.in");
in>>n;
for(i=0;i<n;i++) {
in>>A[i];
original[i]=A[i];
v.push_back(A[i]);
}
in.close();
}
void afis() {
ofstream out("scmax.out");
out<<best<<'\n';
out.close();
}
int main() {
int i,j;
citire();
normalize();
for(i=0;i<n;i++) {
for(j=best;j>0;j--)
if(sol[j]<A[i])
break;
if(j==best)
sol[++best]=A[i];
else
if(A[sol[j+1]]>A[i])
sol[j+1]=A[i];
}
afis();
return 0;
}