Cod sursa(job #2508920)

Utilizator daniel.vbVasile Daniel daniel.vb Data 13 decembrie 2019 14:24:25
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <stdio.h>

struct el{
  int i;
  int x;
  };

el a[500001];


int main()
{
    int jcrt,bm,jm,km,i,x,p,u,n,k;
    el aux;

    FILE *f,*g;

    f=fopen("secventa.in","r");
    g=fopen("secventa.out","w");

    fscanf(f,"%d%d",&n,&k);

    bm=-30001;
    p=1;u=0;jcrt=1;



    for(i=1;i<=n;i++)
    {
       fscanf(f,"%d",&x);
       if(x<=bm)
       {
           u=0;p=1;jcrt=i+1;
           if(n-jcrt+1<k)
               break;
       }
       else
       {
          while(u>=p && a[u].x>x)
               u--;
          u++; a[u].x=x; a[u].i=i;
          aux=a[p];
          if(i-jcrt+1>=k && aux.x>bm)
           {
                  bm=aux.x;km=i;jm=i-k+1;
                  if(n-aux.i+1<k)
                      break;
           }
           if(i-aux.i+1==k)
              p++;
       }
    }

    fprintf(g,"%d %d %d",jm,km,bm);
    fclose(f);
    fclose(g);
}