Pagini recente » Cod sursa (job #2682272) | Cod sursa (job #2054592) | Monitorul de evaluare | Cod sursa (job #1272880) | Cod sursa (job #1528552)
#include <bits/stdc++.h>
#define pb push_back
#define mp make_pair
using namespace std;
int v[5000005],p[5000005];
char s[500000*7+5];
int main()
{
int n,k,x,i,j;
int e,b;
e = 0;
b = 1;
n = k = 0;
FILE *fin;
fin = fopen("deque.in", "r");
freopen("deque.out", "w", stdout);
fgets(s, 13, fin);
for(i = 0;s[i] >= '0' && s[i] <= '9';i++){
n = n*10 + (s[i]-'0');
}
for(i = i+1;s[i] >= '0' && s[i] <= '9';i++){
k = k*10 + (s[i]-'0');
}
int mn = -1e9;
int id,jd;
fgets(s, 500000*7+5, fin);
for(j = 0,i = 1;i <= n;i++){
int sw = 1;
if(s[j] == '-'){
sw = -sw;
j++;
}
for(;s[j] >= '0' && s[j] <= '9';j++){
v[i] = v[i]*10 + (s[j]-'0');
}
j++;
v[i] *= sw;
}
for(i = 1;i <= n;i++){
while(e >= b && v[i] < v[p[e]]){
e--;
}
p[++e] = i;
if(i >= k){
if(p[b] == i-k){
b++;
}
if(mn < v[p[b]]){
mn = v[p[b]];
id = i-k+1;
jd = i;
}
}
}
fclose(fin);
printf("%d %d %d",id,jd,mn);
return 0;
}