Cod sursa(job #1897276)

Utilizator SkiryFarauanu Ionut Skiry Data 1 martie 2017 12:06:55
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 1.01 kb
#include <fstream>
#include <vector>
using namespace std;
ifstream f("scmax.in");
ofstream g("scmax.out");
int n,i,j,maxim,poz,ok;
struct valoare
{
   unsigned int nr,cnt,ant;
};
valoare el;
vector <valoare> a;
void afis(int v)
{
    if(a[v].ant||(a[v].ant==0&&a[0].nr<a[v].nr))
        maxim++,afis(a[v].ant);
    if(maxim) {g<<maxim+1<<'\n';maxim=0;}
        g<<a[v].nr<<" ";
}
int main()
{
    f>>n;
    for(i=1;i<=n;i++)
        f>>el.nr,a.push_back(el);
    a[0].cnt=1;
    for(i=1;i<n;i++)
    {
        ok=0;
        for(j=i-1;j>=0;j--)
            {
                if(a[j].nr<a[i].nr)
                    if(a[i].cnt<a[j].cnt+1)
                {
                    a[i].cnt=a[j].cnt+1,a[i].ant=j;
                    if(a[i].cnt>maxim) maxim=a[i].cnt,poz=i;
                    ok=1;
                }
            }
        if(!ok) a[i].cnt=1;
    }
    //for(i=0;i<n;i++)
        //g<<a[i].nr<<" "<<a[i].cnt<<" "<<a[i].ant<<'\n';
        maxim=0;
    afis(poz);
    return 0;
}