Cod sursa(job #2746089)

Utilizator alex1033Alex Putineanu alex1033 Data 27 aprilie 2021 14:33:39
Problema Secventa Scor 80
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 0.76 kb
#include <bits/stdc++.h>
using namespace std;

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

const int nmax=5e5+5;
int n,k,v[nmax];

void read(){
in>>n>>k;
for(int i=1;i<=n;i++)
in>>v[i];
}

void solve(){
deque<int>dq;
dq.push_back(1);

for(int i=2;i<k;i++)
{
 while(!dq.empty()&&v[i]<=v[dq.back()])
    dq.pop_back();

 dq.push_back(i);
}

int s=0,f=0,best=-(1<<30),mn;
for(int i=k;i<=n;i++)
{
  while(!dq.empty()&&i-dq.front()>=k)
        dq.pop_front();
   mn=min(v[i],v[dq.front()]);

  if(mn>best){
    best=mn;
    f=i-k+1;
    s=i;
  }

  while(!dq.empty()&&v[i]<=v[dq.back()])
    dq.pop_back();

  dq.push_back(i);
}

out<<f<<" "<<s<<" "<<best<<" ";

}



int main(){
read();
solve();

return 0;
}