Cod sursa(job #2309076)

Utilizator _Victor_Victor Ciobanu _Victor_ Data 28 decembrie 2018 13:47:07
Problema Subsir crescator maximal Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.53 kb
#include <bits/stdc++.h>

using namespace std;

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

int n,c,S[100001],sol;

int bin(int c, int n){
	int l=0,r=n-1,m=(l+r)/2;
	while(l+1<r){
		if(S[m]<c)l=m;
		else if(S[m]>c) r=m;
		else break;
		m=(l+r)/2;
	}
	while(S[m]<c && m<n)m++;
	return m;
}

int main(){
	fin>>n;
	fin>>S[0];
	sol=1;
	for(int i=1;i<n;i++){
		cin>>c;
		int ind=bin(c,sol);
		if(ind<sol)S[ind]=c;
		else S[sol++]=c;
	}
	fout<<sol<<'\n';
	for(int i=0;i<sol;i++){
		fout<<S[i]<<' ';
	}
}