Cod sursa(job #1742912)

Utilizator Dan_RadulescuRadulescu Dan Dan_Radulescu Data 17 august 2016 12:15:58
Problema Subsir crescator maximal Scor 100
Compilator cpp Status done
Runda Arhiva educationala Marime 0.9 kb
#include<stdio.h>
using namespace std;
FILE *f1=fopen("scmax.in","r");
FILE *f2=fopen("scmax.out","w");
int n,v[100001],poz[100001],sortat[100001],i,L,j,sol[100001];
int detp(int val,int st,int dr){
    int mij;
    mij=(st+dr)/2;
    if (st==dr){
        if (dr>L){
            L++;
            sortat[L]=2000000000;
        }
        sortat[st]=val;
        return st;
    }
    if (val<sortat[mij]) return detp(val,st,mij);
       else
        if (val>sortat[mij]) return detp(val,mij+1,dr);
           else
             return 0;
}
int main(){
   fscanf(f1,"%d",&n);L=0;
   for (i=1;i<=n;i++){
        fscanf(f1,"%d",&v[i]);
        poz[i]=detp(v[i],1,L+1);
   }
   fclose(f1);
   fprintf(f2,"%d\n",L);
   i=L;j=n;
   while(i>0){
      while(poz[j]!=i) j--;
      sol[i]=v[j];
      i--;
   }
   for (i=1;i<=L;i++)
    fprintf(f2,"%d ",sol[i]);
   fclose(f2);
   return 0;
}