Cod sursa(job #1595615)

Utilizator ciocan_catalinCiocan Catalin - Iulian ciocan_catalin Data 10 februarie 2016 13:54:00
Problema Secventa Scor 80
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <deque>
#define mp make_pair
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k,a[500005],i1,i2,MAX;
deque < pair <int, int> > Q;
void Read()
{
    fin>>n>>k;
    for(int i = 1; i <= n; i++)
        fin>>a[i];
}
void Solve()
{
    int i,j,x;
    for(i = 1; i <= k; i++)
    {
        x = a[i];
        while(!Q.empty() && Q.back().first >= x)
            Q.pop_back();
        Q.push_back(mp(x,i));
    }
    MAX = Q.front().first;
    i1 = 1, i2 = k;
    for(i = k+1; i <= n; i++)
    {
        x = a[i];
        while(!Q.empty() && Q.front().second <= i-k)
            Q.pop_front();
        while(!Q.empty() && Q.back().first >= x)
            Q.pop_back();
        Q.push_back(mp(x,i));
        x = Q.front().first;
        if(x > MAX)
        {
            MAX = x;
            i2 = i;
            i1 = i-k+1;
        }
    }
    fout<<i1<<" "<<i2<<" "<<MAX<<"\n";
}
int main()
{
    Read();
    Solve();
    fout.close();
    return 0;
}