Pagini recente » Cod sursa (job #759861) | Cod sursa (job #2073220) | Cod sursa (job #1736553) | Cod sursa (job #1601374) | Cod sursa (job #2573683)
#include <iostream>
#include <fstream>
#include <vector>
using namespace std;
ifstream fin("scmax.in");
ofstream fout("scmax.out");
int sir[100000000],l[100000000],n=0,maximG=0,poz,nr=0;
void citire(){
int x;
while(fin>>x){n++;sir[n]=x;}
}
void formare(){
int i,j,maxim;
l[n]=1;
for(i=n-1;i>=1;i--){maxim=0;
for(j=i+1;j<=n;j++){
if(sir[i]<sir[j])
if(maxim<=l[j])maxim=l[j];
l[i]=maxim+1;
}
if(maximG<l[i]){maximG=l[i];poz=i;}
}
}
void afisare(){int poz1=poz;
for(int i=poz1+1;i<=n;i++)
{ if(sir[i]>sir[poz1])
if(l[i]==maximG)nr++;
poz1=i-1;
}
fout<<nr<<endl;
fout<<sir[poz]<<" ";maximG--;
for(int i=poz+1;i<=n;i++)
{ if(sir[i]>sir[poz])
if(l[i]==maximG){fout<<sir[i]<<" ";maximG--;}
poz=i-1;
}
}
int main()
{ citire();
formare();
for(int i=1;i<=n;i++)
{
cout<<l[i]<<" ";
}
afisare();
return 0;
}