Cod sursa(job #1328983)

Utilizator andreismara97Smarandoiu Andrei andreismara97 Data 28 ianuarie 2015 22:09:53
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.07 kb
#include<fstream>
#include<deque>
using namespace std;
ifstream in("secventa.in");
ofstream out("secventa.out");

#define Nmax 500005

int  Maxx=-30005,K, N,A[Nmax],fr, bk;
deque <int> D;
char s[5000005];

void chg()
{
    int semn, j, r;
    j = 1;
    for (int i = 0; s[i] != 0; i++)
    {
        semn = 1;
        r = 0;
        if (s[i] == '-')
        {
            semn = -1;
            i++;
        }
        while (s[i] >= '0' && s[i] <= '9')
        {
            r = r * 10 + s[i] - '0';
            i++;
        }
        A[j] = r * semn;
        j++;
    }
}

int main ()
{
    in>>N>>K;
    in.get();
    in.getline(s,5000100);
    chg();
    for(int i=1; i<=N; i++)
    {
        if( !D.empty() && A[i] <= A[ D.back() ])
            D.pop_back();
        D.push_back(i);

        if(D.front() == i-K)
            D.pop_front();

        if( i>=K && A[ D.front() ] > Maxx)
        {
            Maxx=A[D.front()];
            fr=i-K+1;
            bk=i;
        }
    }

    out<<fr<<' '<<bk<<' '<<Maxx;
    return 0;
}