Cod sursa(job #2330562)

Utilizator dimi999Dimitriu Andrei dimi999 Data 28 ianuarie 2019 16:40:17
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.91 kb
#include <bits/stdc++.h>
using namespace std;

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

int dq[500005],v[500005];
char s[3500005];

int main()
{
    int n,k,i,maxi=INT_MIN,pi=0;
    fin>>n>>k;
    fin.get();
    fin.getline(s,3500001);
    int l=strlen(s),p=1;
    for(i=0;i<l;i++)
    {
        int semn=1;
        if(s[i]=='-')
            semn=0,i++;
        while('0'<=s[i]&&s[i]<='9')
            {
                v[p]=v[p]*10+s[i]-48;
                i++;
            }
        if(semn==0)
            v[p]=v[p]*(-1);
        p++;
    }
    int st=1,dr=0;
    for(i=1;i<=n;i++)
    {
       while(st<=dr&&v[dq[dr]]>=v[i])
        dr--;
       dq[++dr]=i;
       if(dq[st]==i-k)
        st++;
       if(i>=k)
       {
           if(v[dq[st]]>maxi)
                maxi=v[dq[st]],pi=i-k+1;
       }
   }
   fout<<pi<<" "<<pi+k-1<<" "<<maxi;
    return 0;
}