Pagini recente » Borderou de evaluare (job #2013085) | Borderou de evaluare (job #830023) | Borderou de evaluare (job #764417) | Borderou de evaluare (job #844944) | Cod sursa (job #815357)
Cod sursa(job #815357)
#include<fstream>
#define Nmax 500010
#define INFI 30010
using namespace std;
int n, k, a[Nmax], l, r, c[Nmax], st, dr, minim;
int main()
{
ifstream f("secventa.in");
ofstream h("secventa.out");
f >> n >> k;
for (int i = 1; i <= n; ++i)
f >> a[i];
f.close();
minim = - INFI;
l = r = 1;
c[r] = 1;
for (int i = 2; i < k; ++i)
{
if (l <= r && a[i] <= a[c[r]])
r--;
r++;
c[r] = i;
}
for (int i = k; i <= n; ++i)
{
while (l <= r && a[i] <= a[c[r]])
r--;
r++;
c[r] = i;
if (minim < a[c[l]])
{
minim = a[c[l]];
st = i + 1 - k;
dr = i;
}
if (c[l] < i + 2 -k)
l++;
}
h << st << " " << dr << " " << minim << '\n';
h.close();
return 0;
}