Cod sursa(job #432052)

Utilizator soare_cristian16Cristy93 soare_cristian16 Data 1 aprilie 2010 19:40:06
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.58 kb
#include<fstream>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int pred[100001],v[100001],x[100001],n;
int caut(int r, int n)
{
	int i,pas=1<<16;
	for(i=0;pas;pas>>=1)
		if(i+pas<=n&&x[v[i+pas]]<r)
			i+=pas;
	return i+1;
}
void sir(int poz)
{
    if(poz==0)
        return;
    sir(pred[poz]);
    g<<x[poz]<<" ";
}
int main()
{
	int i=0,r,y,nr=0;
	f>>n>>x[++i];
	v[++nr]=1;
	while(f>>x[++i])
	{
		r=x[i];
		y=caut(r,nr);
		if(y>nr)
			v[++nr]=i;
		else
			v[y]=i;
        pred[i]=v[y-1];
	}
	g<<nr<<"\n";
	sir(v[nr]);
	return 0;
}