Cod sursa(job #1676876)

Utilizator marcudaniel12Marcu Tudor Daniel marcudaniel12 Data 6 aprilie 2016 11:01:35
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <iostream>
#include <fstream>
#include <algorithm>
#include <deque>
#include <set>
#include <ctype.h>
#include <string.h>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");

const int MAXN=5e6+5;
deque < int > deq;
int n,k,v[MAXN];
int miny=-30005,miny2=-30005,poz;
char c[MAXN];

void buffer()
{
    fin.get(c,MAXN);

    for(int i=0; c[i]; i++)
    {
        int nr=0;
        bool semn=false;

        if(isdigit(c[i]))
        {
            if(c[i-1]=='-')  semn=true;

            while(isdigit(c[i])) nr=nr*10+(int)c[i++]-48;

            if(semn) nr=-nr;
            v[++n]=nr;
        }
    }
}






int main()
{
    fin>>n>>k;
    fin.get();
    n=0;
    buffer();

        for(int i=1; i<=n; i++)
        {
            while( !deq.empty() && v[i]<=v[deq.back()] ) deq.pop_back();

            deq.push_back(i);

            if(i>=k)
            {
                miny2=v[deq.front()];
                if(miny<miny2)
                {
                    miny=miny2;
                    poz=i-k;
                }
                if( !deq.empty() && i-deq.front()>=k-1 ) deq.pop_front();
            }
        }
        fout<<poz+1<<" "<<poz+k<<" "<<miny;
}