Cod sursa(job #822357)

Utilizator marinutzacatana marina marinutza Data 23 noiembrie 2012 12:42:53
Problema Secventa Scor 10
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.13 kb
#include<fstream>
#include<deque>
#include<cstring>
#define nmax 500010
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
deque <int> deq;
int i,n,k,x[nmax],s,p,u,a,j,e;
char sir[8*nmax];
int main()
{
    f>>n>>k;f.get();
    f.getline(sir,8*nmax);
    e=1;
    for(i=0;i<=strlen(sir);i++)
    {
        if(sir[i]=='-')
            e=-1;
        else
            if(sir[i]>='0' && sir[i]<='9')
                a=a*10+(sir[i]-'0');
            else
            {
                x[++j]=a*e;
                a=0;
                e=1;
            }
    }
    for(i=1;i<=k;i++)
    {
        while(!deq.empty() && x[i]<=x[deq.back()])
        deq.pop_back();
        deq.push_back(i);
    }
    s=x[deq.front()];
    p=1;
    u=k;
    for(i=k+1;i<=n;i++)
    {
        while(!deq.empty() && x[i]<=x[deq.back()])
        deq.pop_back();
        deq.push_back(i);
        if(deq.front()==i-k)
        deq.pop_front();
        if(x[deq.front()]>s)
        {
            s=x[deq.front()];
            p=i-k+1;
            u=i;
        }
    }
    g<<p<<' '<<u<<' '<<s;
    return 0;
}