Pagini recente » Soluţii ONIS 2015, Runda 3 | Cod sursa (job #419747) | Cod sursa (job #2671552) | Cod sursa (job #1097005) | Cod sursa (job #2746089)
#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;
}