Pagini recente » Cod sursa (job #681462) | Cod sursa (job #2905206) | Cod sursa (job #1608632) | Cod sursa (job #1602783) | Cod sursa (job #3317374)
#include <fstream>
using namespace std;
int a[100005], st[100005], leftp[100005], rightp[100005];
int main() {
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n, k, top = 0;
fin >> n >> k;
for (int i = 1; i <= n; i++)
fin >> a[i];
for (int i = 1; i <= n; i++) {
while (top > 0 && a[st[top]] >= a[i]) {
rightp[st[top]] = i - 1;
top--;
}
if (top == 0) leftp[i] = 1;
else leftp[i] = st[top] + 1;
st[++top] = i;
}
while (top > 0) {
rightp[st[top]] = n;
top--;
}
int bestL = 1, bestR = k, bestBase = -2000000000;
for (int i = 1; i <= n; i++) {
int len = rightp[i] - leftp[i] + 1;
if (len >= k && a[i] > bestBase) {
bestBase = a[i];
bestL = leftp[i];
bestR = rightp[i];
}
}
fout << bestL << " " << bestR << " " << bestBase;
return 0;
}