Pagini recente » Monitorul de evaluare | Diferente pentru home intre reviziile 618 si 617 | Diferente pentru problema/politia intre reviziile 13 si 12 | Monitorul de evaluare | Cod sursa (job #1796618)
#include <cstdio>
using namespace std;
int dq[500005];
int v[500005];
int main()
{
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
int n, k, dr, dqst, dqdr;
int ans = -30002;
dqst = 0; dqdr = 1;
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
{
scanf("%d", &v[i]);
if (dqst + 1 != dqdr && dqst + k <= i)
++dqst;
while (dqst + 1 != dqdr && v[i] < v[dq[dqdr]])
--dqdr;
dq[++dqdr] = i;
if (i >= k && v[dq[dqst]] > ans)
{
ans = v[dq[dqst]];
dr = i;
}
}
printf("%d %d %d\n", dr - k + 1, dr, ans);
return 0;
}