Cod sursa(job #1507637)

Utilizator TonyFrumTony Frum TonyFrum Data 21 octombrie 2015 19:34:06
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
//#include<iostream>
#include<deque>
#include<fstream>
#include<string>
using namespace std;

ifstream f("secventa.in");
ofstream g("secventa.out");

int main()
{
    int k,n,i,w,x,sem=0,maxi=-30001,t=0,ss;
    deque<int> q,v;
    f>>n>>k;
    char s[5000000];
    int a[n+1];
    f.getline(s,EOF);
    for(i=0;s[i];i++)
    {
        ss=1;
        if(isdigit(s[i]))
        {
            t++;
            if(s[i-1]=='-')
                ss=-1;
            for(;isdigit(s[i]);i++)
                a[t]=a[t]*10+s[i]-'0';
            a[t]+=ss;
        }
    }
    for(i=1;i<=t;i++)
    {
        x=a[i];
        sem=0;
        if(v.size()!=0)
            if(i-v.front()>=k)
            {
                q.pop_front();
                v.pop_front();
            }
        while(q.size()!=0 && sem==0)
        {
            sem=1;
            if(x<q.back())
            {
                sem=0;
                q.pop_back();
                v.pop_back();
            }
        }
        q.push_back(x);
        v.push_back(i);
        if(i>=k && maxi<q.front())
        {
            maxi=q.front();
            w=i-k+1;

        }
    }
    g<<w<<" "<<w+k-1<<" "<<maxi;
    g.close();
    f.close();
    return 0;
}