Cod sursa(job #2284863)

Utilizator ivan.tudorIvan Tudor ivan.tudor Data 17 noiembrie 2018 18:18:32
Problema Secventa Scor 70
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.82 kb
#include <iostream>
#include<cstdio>
#include<limits.h>
using namespace std;
const int N=500001;
int deq[N];
int v[N];
int maxi=0;
int valmax=INT_MIN;
int main()
{
    FILE*fin,*fout;
    fin=fopen("secventa.in","r");
    fout=fopen("secventa.out","w");
    int i,vf=0,baza=1;
    int n,k;
    fscanf(fin,"%d%d",&n,&k);
    for(i=1;i<=n;i++){
      fscanf(fin,"%d",&v[i]);
    }
    for(i=1;i<=n;i++){
      while(vf>=baza && v[deq[vf]]>=v[i]){
        vf--;
      }
      deq[++vf]=i;
      while(deq[baza]<=i-k)
        baza++;
      if(i>=k){
        if(valmax<v[deq[baza]]){
          maxi=i;
          valmax=v[deq[baza]];
        }
      }
    }
    int inc=maxi-k+1;
    while(inc>=1 && v[inc]>=valmax)
      inc--;
    inc++;
    fprintf(fout,"%d %d %d",inc,maxi,valmax);
    return 0;
}