Cod sursa(job #789964)

Utilizator VisuianMihaiMihai Visuian VisuianMihai Data 19 septembrie 2012 22:36:10
Problema Secventa Scor 90
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.05 kb
#include <fstream>
#include <queue>
#include <cstring>
using namespace std;

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

int a[500001], maxim, semn[500001];
int k, n, i, y;
char s;
deque<int>q;
int main()
{
    maxim = -31000;
    fin>>n>>k;
    fin.get();
    int x = 1;
    while ( fin.get(s))
    {
        if ( s == '-')
        {
            semn[x] = -1;
        }
        else if ( s ==' ')
        {
            a[x] *= semn[x];
            x++;
            semn[x] = 1;
        }
        else if ( s <='9' && s >='0')
        {
            a[x] = a[x]*10+s-'0';
        }
    }
    for (i=1;i<=n;i++)
    {
        while (!q.empty() && a[q.back()]>=a[i])
        {
            q.pop_back();
        }
        q.push_back(i);
        if (q.front()==i-k)
        {
            q.pop_front();
        }
        if (i >= k && a[q.front()] > maxim )
            {
                maxim=a[q.front()];
                y=i;
            }
    }
    fout<<y-k+1<<" "<<y<<" "<<maxim<<"\n";
    return 0;
}