Cod sursa(job #1083707)

Utilizator iordache.bogdanIordache Ioan-Bogdan iordache.bogdan Data 16 ianuarie 2014 12:00:51
Problema Subsir crescator maximal Scor 70
Compilator cpp Status done
Runda Arhiva educationala Marime 0.93 kb
#include <cstdio>
#include <fstream>

using namespace std;

int n,i,Max,m,pmax,poz,j;
int best[100005],v[100005],p[100005],sol[100005];

int main() {
    FILE *f = fopen("scmax.in","r");
    ofstream g("scmax.out");
    fscanf(f,"%d",&n);
    for(i=1;i<=n;i++)
        fscanf(f,"%d", &v[i]);
    best[1]=1;
    p[1]=-1;
    for(i=2;i<=n;i++) {
        Max=0;pmax=0;
        for(j=1;j<i;j++)
            if(v[j]<v[i] && best[j]>Max) {
                Max=best[j];
                pmax=j;
            }
        best[i]=Max+1;
        if(Max==0)
            p[i]=-1;
        else
            p[i]=pmax;
    }
    poz=0;Max=0;
    for(i=1;i<=n;i++)
        if(best[i]>Max)
        {
            Max=best[i];
            poz=i;
        }
    g<<Max<<"\n";
    m=Max;
    for(;poz!=-1;poz=p[poz]) {
        sol[Max]=v[poz];
        Max--;
    }
    for(i=1;i<=m;i++)
        g<<sol[i]<<" ";
    return 0;
}