Mai intai trebuie sa te autentifici.
Cod sursa(job #1697950)
Utilizator | Data | 3 mai 2016 12:53:00 | |
---|---|---|---|
Problema | Secventa | Scor | 80 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.65 kb |
#include <bits/stdc++.h>
using namespace std;
const int maxN = (int)5E5;
int n, k;
int a[maxN], dq[maxN];
void Solve() {
int l, r, m, top, bot;
m = -(int)2E9;
top = -1; bot = 0;
for(int i = 0; i < n; ++i) {
scanf("%d", &a[i]);
while (top >= bot && a[i] <= a[dq[top]]) --top;
dq[++top] = i;
if (i >= k-1) {
while (top >= bot && dq[bot] < i-k+1) ++bot;
if (a[dq[bot]] > m) {
m = a[dq[bot]];
l = i-k+1;
r = i;
}
}
}
printf("%d %d %d\n", l+1, r+1, m);
}
int main() {
freopen("secventa.in", "r", stdin);
freopen("secventa.out", "w", stdout);
scanf("%d %d", &n, &k);
Solve();
return 0;
}