Cod sursa(job #2354112)

Utilizator FunnyStockyMihnea Andreescu FunnyStocky Data 24 februarie 2019 21:19:25
Problema Secventa Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.45 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;

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

int d[N];
int l=1;
int r=0;

int main()
{
        cin>>n;
        cin>>k;
        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');
        }
        int mx=0;
        int st;
        int dr;
        for(int i=1;i<=n;i++)
        {
                while(l<=r && v[i]<=v[d[r]])
                        r--;
                d[++r]=i;
                if(d[l]==i-k)
                        l++;
                if(i>=k)
                {
                        int cur=v[d[l]];
                        if(cur>mx)
                        {
                                mx=cur;
                                st=i-k+1;
                                dr=i;
                        }
                }
        }
        cout<<st<<" "<<dr<<" "<<mx<<"\n";
        return 0;
}