Cod sursa(job #1010879)

Utilizator sebinechitasebi nechita sebinechita Data 15 octombrie 2013 20:58:20
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <iostream>
#include <fstream>
#include <cstring>
#include <string>
#include <climits>
#include <algorithm>
#include <cmath>
#include <queue>
#include <deque>
#include <iomanip>
#include <stack>
#include <cstdio>

using namespace std;

ifstream fin("secventa.in");
ofstream fout("secventa.out");

#define baza 10
#define MAX 501000

deque <int> coada;
int a[MAX];
char s[MAX*7];
int main()
{
    int n ,k, i, b=INT_MIN, x=0, g, l, lol;

    fin>>n>>k;
    fin.get(s[0]);
    fin.getline(s, sizeof(s));

    g=strlen(s);
    i=0;
    for(l=1;l<=n+1;l++)
    {
        lol=1;

        while(s[i]!=' ' && i<g)
        {
            if(s[i]=='-')
                {lol=-1;
                i++;}
            a[l]=a[l]*10+s[i]-'0';
            i++;

        }
        i++;
        a[l]*=lol;

    }


    for(i=1;i<=n;i++)
    {
        while(!coada.empty() && a[coada.back()]>=a[i])
        {
            coada.pop_back();
        }
        coada.push_back(i);
        if(coada.front()==i-k)
        {
            coada.pop_front();
        }
        if(i>=k && a[coada.front()]>b)
        {
            b=a[coada.front()];
            x=i;
        }

    }
    fout<<x-k+1<<" "<<x<<" "<<b;



    return 0;
}