Pagini recente » Arhiva de probleme | Cod sursa (job #1728005) | Autentificare | Cod sursa (job #356676) | Cod sursa (job #1796623)
#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 = 1; dqdr = 0;
scanf("%d %d", &n, &k);
for (int i = 1; i <= n; ++i)
{
scanf("%d", &v[i]);
if (dqst <= dqdr && dq[dqst] + k <= i)
++dqst;
while (dqst <= 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;
}