Cod sursa(job #1560364)

Utilizator elevenstrArina Raileanu elevenstr Data 2 ianuarie 2016 17:04:22
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <bits/stdc++.h>

using namespace std;
ofstream out("secventa.out");
FILE* fila=fopen("secventa.in","r");
#define MAX 500007
#define INF 40000
long long v[MAX];
deque <long long> D;
long long poz=0;
#define LIM 4000
char buff[LIM];
void cit(long long &x)
{
    while(!isdigit(buff[poz]))
    {
        ++poz;
        if(poz==LIM)
        {
            fread(buff,1,LIM,fila);
            poz=0;
        }
    }
    x=0;
    while(isdigit(buff[poz]))
    {
        x=x*10+buff[poz]-'0';
        ++poz;
        if(poz==LIM)
        {
            fread(buff,1,LIM,fila);
            poz=0;

        }
    }

}
int main()
{
    long long n,k,i,j,l,sf,mini;
   cit(n);cit(k);
    for(int i=1; i<=n; i++)
        cit(v[i]);
    mini=-INF;
    for(int i=1; i<=n; i++)
    {
        while(!D.empty()&&v[D.back()]>=v[i])
            D.pop_back();
        D.push_back(i);
        if(D.front()<=i-k)D.pop_front();
        if(i>=k&&v[D.front()]>mini)
        {
            mini=v[D.front()];
            sf=i;
        }
    }
    out<<sf-k+1<<" "<<sf<<" "<<mini;
    return 0;
}