Pagini recente » Cod sursa (job #3250166) | Cod sursa (job #2275157) | Cod sursa (job #3201769) | Cod sursa (job #743876) | Cod sursa (job #999728)
Cod sursa(job #999728)
#include<fstream>
using namespace std;
int n,A[100001],best[100001],l;
int main(){
ifstream inFile("scmax.in");
inFile>>n;
for(int i=1;i<=n;i++) inFile>>A[i];
ofstream outFile;
outFile.open("scmax.out");
best[1]=1;int maxB;
int index;
for(int i=2;i<=n;i++){
maxB=0;
for(int j=1;j<=i-1;j++)
if(A[i]>A[j] && best[j]>maxB) { maxB=best[j]; index=j;}
best[i]=maxB+1;
}
maxB=best[1];
for(int i=2;i<=n;i++) if(best[i]>maxB){ maxB=best[i];index=i;}
outFile<<maxB<<"\n";
int found[100001];
found[maxB]=A[index];
for(int i=index-1;i>=1;i--)
if(best[i]+1==maxB){maxB--;found[maxB]=A[i];}
for(int i=1;i<=best[index];i++) outFile<<found[i]<<" ";
}