Cod sursa(job #1304846)

Utilizator bogdanboboc97Bogdan Boboc bogdanboboc97 Data 29 decembrie 2014 12:55:14
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.74 kb
#include <bits/stdc++.h>
#define MX 100002
using namespace std;
int a[MX],d[MX],n;
int main()
{
    ifstream in("scmax.in");
    in>>n;
    for(int i=1;i<=n;i++)in>>a[i];
    int p,sol=0;
    for(int i=1;i<=n;i++)
    {
        for(int j=i-1;j>=0;j--)
        if(a[j]<a[i])
            d[i]=max(d[i],d[j]+1);
        if(d[i]>sol)
        {
            sol=d[i];
            p=i;
        }
    }
    vector<int> s;
    while(p)
    {
        s.push_back(a[p]);
        for(int j=p-1;j>=0;j--)
        if(d[j]==d[p]-1 && a[j]<a[p])
        {
            p=j;
            break;
        }
    }
    reverse(s.begin(),s.end());
    ofstream out("scmax.out");
    out<<sol<<'\n';
    for(vector<int>::iterator i=s.begin();i!=s.end();i++)out<<*i<<' ';
    return 0;
}