Cod sursa(job #1469355)

Utilizator thecoreUPB-Catana-Oprea-Poenaru thecore Data 8 august 2015 02:57:47
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.14 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;
    int r=strlen(sir);
    for(i=0;i<=r;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;
}