Cod sursa(job #2354129)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 24 februarie 2019 21:32:26
Problema Secventa Scor 100
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.46 kb
#include <fstream>
#include <cstring>

using namespace std;

ifstream cin("secventa.in");
ofstream cout("secventa.out");

const int N=500000+7;

int n;
int k;

int v[N];

int dq[N];
int st;
int dr;

char s[7*N];
int y=1;

int main()
{
        cin>>n;
        cin>>k;
        /**for(int i=1;i<=n;i++)
                cin>>v[i];
        **/
        cin.get();
        cin.getline(s,7*N);
        int ln=strlen(s);
        int c=0,sg=1;
        for(int i=0;i<=ln;i++)
        {
                if(s[i]==' ' || i==ln)
                {
                        v[y]=sg*c;
                        y++;
                        c=0;
                        sg=1;
                }
                else
                        if(s[i]=='-')
                                sg=-sg;
                        else
                                c=10*c+(s[i]-'0');
        }
        st=1;
        dr=0;
        int best=-(1<<30);
        int a;
        int b;
        for(int i=1;i<=n;i++)
        {
                while(st<=dr && v[i]<=v[dq[dr]])
                        dr--;
                if(st<=dr && i-dq[st]+1>k)
                        st++;
                dq[++dr]=i;
                if(i>=k && v[dq[st]]>best)
                {
                        best=v[dq[st]];
                        a=i-k+1;
                        b=i;
                }
        }
        cout<<a<<" "<<b<<" "<<best<<"\n";
        return 0;
}