Cod sursa(job #1669014)

Utilizator circeanubogdanCirceanu Bogdan circeanubogdan Data 30 martie 2016 11:46:23
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.95 kb
#include <fstream>
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int n,k,v[5000001],deq[5000001],i,nr,z,semn,p,u,maxim,st,dr;
char sir[3500010];
int main()
{
    f>>n>>k;
    f.get();
    f.getline(sir,3500010);
    i=0;
    while(sir[i]!=0)
    {nr=0;
        if(sir[i]=='-')
        {
            semn=-1;i++;
        }
        else
            semn=1;
        while(sir[i]>='0'&&sir[i]<='9')
        {
            nr=nr*10+sir[i]-'0';i++;
        }
        nr=nr*semn;
        i++;
        v[++z]=nr;
    }
    //for(i=1;i<=n;i++)
      //  g<<v[i]<<" ";
    p=1;u=1;
    maxim=-2000000;
    for(i=1;i<=n;i++)
    {
      while(p<=u&&v[i]<=v[deq[u]])
        u--;
      deq[++u]=i;
      if(i-k==deq[p])
        p++;
      if(i>=k&&v[deq[p]]>maxim)
      {
          maxim=v[deq[p]];
          st=i-k+1;
          dr=i;
      }
    }
    g<<st<<" "<<dr<<" "<<maxim;


    return 0;
}