Cod sursa(job #2135155)

Utilizator Laura_CorneiLaura Maria Cornei Laura_Cornei Data 18 februarie 2018 17:18:02
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.01 kb
#include <stdio.h>
#include <fstream>
#define maxim 500005
using namespace std;
fstream f1("secventa.in", ios::in);
fstream f2("secventa.out", ios::out);
int n, k, a[maxim], prim=1, ultim, cand[maxim], in, sf, maxi=-30001;
void fastscan(int &number)
{
    bool negative = false;
    register int c;
    number = 0;
    c = f1.get();
    if (c=='-')
    {
        negative = true;
        c = f1.get();
    }
    for (; (c>47 && c<58); c=f1.get())
        number = number *10 + c - 48;
    if (negative)
        number *= -1;
}
int main()
{
    int i;
    fastscan(n);
     fastscan(k);
    for(i=1; i<=n; i++)  fastscan(a[i]);
    for(i=1; i<=n; i++)
    {
        if(cand[prim]==i-k) prim++;
        while((prim<=ultim)&&(a[cand[ultim]]>= a[i])) ultim--;
        ultim++;
        cand[ultim]=i;

        if((maxi< a[cand[prim]])&&(i>=k))
        {
            in=i-k+1;
            sf=i;
            maxi=a[cand[prim]];
        }
    }
    f2<<in<<' '<<sf<<' '<<maxi;
    return 0;
}