Cod sursa(job #1222112)

Utilizator horatiu11Ilie Ovidiu Horatiu horatiu11 Data 22 august 2014 11:55:21
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.88 kb
//horatiu11
# include <deque>
# include <fstream>
# include <cstring>
# define nmax 500001
# define lmax 5000001
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int n,k,a[nmax],pm,pM,M=-30001,semn,j;
char s[lmax];
deque <int>d;
int main()
{
    f>>n>>k;f.get();
    f.getline(s,lmax);s[strlen(s)]='\n';
    for(int i=1;i<=n;++i)
    {
        a[i]=0;semn=1;
        if(s[j]=='-') semn=-1,j++;
        while(s[j]!=' ' && s[j]!='\n') a[i]=a[i]*10+s[j]-'0',j++;
        j++;
        a[i]*=semn;
        while(!d.empty() && a[d.back()]>=a[i])
            d.pop_back();
        d.push_back(i);
        if(d.front()==i-k)
            d.pop_front();
        if(i>=k && !d.empty() && M<a[d.front()])
        {
            M=a[d.front()];
            pm=i-k+1;
            pM=i;
        }
    }
    g<<pm<<' '<<pM<<' '<<M<<'\n';
    return 0;
}