Cod sursa(job #1984215)

Utilizator DragosArseneDragos Arsene DragosArsene Data 23 mai 2017 23:48:05
Problema Subsir crescator maximal Scor 10
Compilator cpp Status done
Runda Arhiva educationala Marime 0.97 kb
#include <iostream>
#include<stdio.h>
using namespace std;
int v[100000], best[100000], q[100000];
int main() {
    FILE *fin, *fout;
    int a, b, x, y, n, maxx, i, maxim=1, stg, dr, mijl, steag;

fin = fopen("scmax.in", "r");
fout = fopen("scmax.out", "w");

fscanf(fin,"%d", &n);
for(i=1;i<=n;i++){
    fscanf(fin,"%d", &v[i]);
}
maxx=0;
q[1]=v[1];
maxim=1;
for(i=2;i<=n;i++){
    maxx=-1;
    stg=1;
    x=v[i];
    dr=maxim+1;
    mijl=(dr+stg)/2;
    steag=1;
    while(dr-stg>1&&steag==1){

        if(x>q[mijl]){
            stg=mijl;
        }
        if(x<q[mijl]){
            dr=mijl;
        }
        if(x==q[mijl])
            steag=0;
        mijl=(dr+stg)/2;
    }
if(steag==1){
if(x<q[mijl]){
    q[mijl]=x;
}
else if(x>q[mijl+1]&&mijl==dr-1){
    q[mijl+1]=x;
    maxim++;
}
}

}
fprintf(fout,"%d\n", maxim);
i=1;
while(q[i]!=0){
    fprintf(fout,"%d ", q[i]);
    i++;
}
fclose(fin);
fclose(fout);
    return 0;
}