Cod sursa(job #957516)

Utilizator geniucosOncescu Costin geniucos Data 5 iunie 2013 11:56:41
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.82 kb
#include<cstdio>
#include<deque>
using namespace std;
int semn,po,i,maxi,sf,k,n,a[500009];
char sir[500000*6+1];
deque < int > cc;
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d",&n);
scanf("%d\n",&k);
gets(sir+1);
po=1;
for(i=1;i<=n;i++)
{
    if(sir[i]=='-')
    {
        semn=-1;
        po++;
    }
    else semn=1;
    while(sir[po]>='0'&&sir[po]<='9')
    {
        a[i]=a[i]*10+sir[po]-48;
        po++;
    }
    po++;
    a[i]*=semn;
}
maxi=-9999999;
sf=0;
for(i=1;i<=n;i++)
{
    while(!cc.empty()&&a[cc.back()]>a[i]) cc.pop_back();
    cc.push_back(i);
    if(cc.front()<=i-k) cc.pop_front();
    if(i>=k&&a[cc.front()]>maxi)
    {
        maxi=a[cc.front()];
        sf=i;
    }
}
printf("%d %d %d\n",sf-k+1,sf,maxi);
return 0;
}