Cod sursa(job #2120482)

Utilizator Anastasia11Susciuc Anastasia Anastasia11 Data 2 februarie 2018 15:17:51
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.04 kb
#include <fstream>
#include <deque>
#include <cstring>
using namespace std;

ifstream f("secventa.in");
ofstream g("secventa.out");
int n , k , a[500002],poz,max1=-1e8,p;
char s[3500000];
deque <int> dq;
int main()
{
     f >> n >> k;
     f.get();
     f.getline(s,sizeof(s));
     for ( int i = 0 ; s[i] != 0 ; i ++ )
     {
         int semn=1;
          if(s[i]=='-')
            semn=-1,i++;

             int nr=0;
              while(s[i]>='0'&&s[i]<='9')
              {
                  nr=nr*10+s[i]-'0';
                  i++;
              }
         nr=nr*semn;
         a[++p]=nr;
     }

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

        dq.push_back(i);

         if( i == dq.front() + k)
         dq.pop_front();

         if(i>=k)
        {
            if(max1<a[dq.front()])
            {
                max1=a[dq.front()];
                poz=i;
            }
        }
    }
    g <<poz-k+1<<" "<<poz<<" "<<max1;

}