Cod sursa(job #668022)

Utilizator okros_alexandruOkros Alexandru okros_alexandru Data 24 ianuarie 2012 09:43:36
Problema Subsir crescator maximal Scor 5
Compilator cpp Status done
Runda Arhiva educationala Marime 0.87 kb
#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;
}