Cod sursa(job #976202)

Utilizator dobrebogdanDobre Bogdan Mihai dobrebogdan Data 22 iulie 2013 18:49:57
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.86 kb
#include<stdio.h>
#include<deque>
using namespace std;
deque<short int>d;
short int v[500004];
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
unsigned n,k,i,j;
short int m;
scanf("%u%u",&n,&k);
for(i=1;i<=k;i++)
{
    scanf("%hd",&v[i]);
    while(!d.empty())
    {
        if(v[i]>d.back())
            break;
            d.pop_back();
    }
    d.push_back(v[i]);
}
m=d.front();
j=k;
for(i=k+1;i<=n;i++)
{
    scanf("%hd",&v[i]);
    if(d.size()==k)
    d.pop_front();
    while(!d.empty())
    {
        if(v[i]>d.back())
            break;
            d.pop_back();
    }
    d.push_back(v[i]);
    if(d.front()>m)
    {
        m=d.front();
        j=i;
    }
}
while(j!=0 && v[j]>=m)
j--;
n++;
while(i!=n && v[i]>=m)
    i++;
j++;
i--;
printf("%u %u %hd\n",j,i,m);
    return 0;
}