Cod sursa(job #815444)

Utilizator TheShadowsAlexandru Cristian TheShadows Data 16 noiembrie 2012 22:43:56
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.73 kb
#include<cstdio>
using namespace std;
const int LIM = 10005;
int v[LIM], p[LIM], q[LIM], lq=0, lp=0;
void print(FILE *out, int start, int x){
    int i=start;
    for(i=start; p[i]!=x; --i);
    if(x-1>=1)
        print(out, i-1, x-1);
    fprintf(out, "%d ", v[i]);
}
int main(){
    FILE *in=fopen("scmax.in","r"), *out=fopen("scmax.out","w");
    int n; bool pp;
    fscanf(in, "%d\n", &n);
    for(int i=1; i<=n; ++i){
        fscanf(in, "%d", &v[i]);
        pp=false;
        for(int j=1; j<=lq; ++j)
            if(q[j]>=v[i]){
                pp=true; q[j]=v[i]; ++lp; p[lp]=j;
            }
        if(!pp){
            ++lq; q[lq]=v[i]; ++lp; p[lp]=lq;
        }
    }
    fprintf(out, "%d\n", lq);
    print(out, lp, lq);
    return 0;
}