Cod sursa(job #2337328)

Utilizator ivddabDabelea Ioana-Viviana ivddab Data 6 februarie 2019 11:57:16
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.83 kb
#include <fstream>
#define NM 500006
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int n,k,fr,bk,i,max1,pi,pj;
int d[NM],a[NM];
void afla(int i,int bk,int &max1,int &pi,int &pj){
    if((i-1)-d[bk]+1>=k){
       if(max1<a[d[bk]]){ max1=a[d[bk]]; pi=d[bk]; pj=i-1; }
            else
       if(max1==a[d[bk]]){
            if(pi>d[bk]) { pi=d[bk]; pj=i-1; }
                else
            if(pi==d[bk])  pj=min(i-1,pj);
        }
    }
}
int main()
{
    f>>n>>k;
    fr=1; bk=0;
    for(i=1;i<=n;i++){
        f>>a[i];
        while(fr<=bk&&a[d[bk]]>=a[i]){
              afla(i,bk,max1,pi,pj);
              bk--;
        }
        d[++bk]=i;
    }
    for(i=1;i<=bk;i++){
      if(n-d[i]+1>=k) afla(n+1,i,max1,pi,pj);
    }
    g<<pi<<' '<<pj<<' '<<max1<<'\n';
    return 0;
}