Pagini recente » Cod sursa (job #621529) | Cod sursa (job #2846213) | Cod sursa (job #1398432) | Cod sursa (job #529231) | Cod sursa (job #345969)
Cod sursa(job #345969)
#include<fstream>
using namespace std;
ofstream fout("scmax.out");
int n,a[100001],b[100001],maxi;
void read(){
ifstream fin("scmax.in");
fin>>n;
for(int i = 1; i <= n; i++)
fin>>a[i];
fin.close();
}
int recurs(int maxi,int q){
if(q == 0)return 0;
else
if(b[q] == maxi)
{
recurs(maxi-1,q-1);
fout<<a[q]<<" ";
}
else recurs(maxi,q-1);
}
void write(){
fout<<maxi<<"\n";
recurs(maxi,n);
}
int searchbsol(int k){
int i,bsol=0;
for(i = k-1;i >= 1; i--)
if(a[i] < a[k] && b[i] > bsol)
bsol = b[i];
return bsol+1;
}
void scmax(){
for(int i = 2; i <= n; i++)
{
b[i] = searchbsol(i);
if(b[i] > maxi)
maxi = b[i];
}
}
int main(){
read();
maxi = 1;
b[1] = 1;
scmax();
write();
fout.close();
return 0;
}