Cod sursa(job #2309466)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 29 decembrie 2018 00:39:26
Problema Subsir crescator maximal Scor 55
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[0];
	R[0]=0;
	sol=1;
	for(int i=1;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=0;
	for(int i=n-1;i>=0;i--){
		if(R[i]==sol && sol>=0){
			sol--;
			A[k++]=C[i];
		}
	}
	for(int i=0;i<k;i++){
		fout<<A[i]<<' ';
	}
	return 0;
}