Cod sursa(job #2309472)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 29 decembrie 2018 00:54:19
Problema Subsir crescator maximal Scor 95
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.57 kb
#include <bits/stdc++.h>

using namespace std;

ifstream fin("scmax.in");
ofstream fout("scmax.out");

int n,S[100001],sol,C[100001],A[100001],R[100001];

int main(){
	fin>>n;
	fin>>S[1];
	R[1]=1;
	sol=2;
	for(int i=2;i<=n;i++){
		fin>>C[i];
		int ind=lower_bound(S,S+sol,C[i])-S;
		if(ind<sol){
			S[ind]=C[i];
			R[i]=ind;
		}else{
			R[i]=sol;
			S[sol++]=C[i];
		} 
	}
	fout<<--sol<<'\n';
	int k=sol;
	for(int i=n-1;i>=0;i--){
		if(R[i]==sol && sol>=0){
			A[sol--]=C[i];
		}
	}
	for(int i=1;i<=k;i++){
		fout<<A[i]<<' ';
	}
	return 0;
}