Cod sursa(job #1935470)

Utilizator Garen456Paun Tudor Garen456 Data 22 martie 2017 13:54:30
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <ctype.h>
#include <algorithm>
#include <cstring>
#define BUF_SIZE 50000
int a[500005];
int de[500005];
int fr,bc,pf;
int maxi=-300000;
FILE *f=fopen("secventa.in","r");
FILE *g=fopen("secventa.out","w");
int pos=BUF_SIZE;
char buf[BUF_SIZE];

inline char getChar(FILE *f) {
  if (pos == BUF_SIZE) {
    fread(buf, 1, BUF_SIZE, f);
    pos = 0;
  }

  return buf[pos++];
}
inline int read(FILE *f) {
  int result = 0;
  char c;
  do {
    c = getChar(f);
  } while (!isdigit(c));

  do {
    result = 10 * result + c - '0';
    c = getChar(f);
  } while (isdigit(c));

  return result;
}

int main()
{   int n,k;

    n=read(f);
    k=read(f);
    int i;
    fr=1; bc=0;
    for(i=1;i<=n;++i)
    {
        a[i]=read(f);
        while(fr<=bc && a[i]<a[de[bc]] ) bc--;
        de[++bc]=i;
        if(de[fr]==i-k) fr++;

        if(i>=k)
        if(a[de[fr]] >maxi ) {maxi=a[de[fr]]; pf=i;}
    }
    fprintf(g,"%d %d %d",pf-k+1,pf,maxi);
    return 0;
}