Pagini recente » Cod sursa (job #2720553) | Cod sursa (job #45710) | Cod sursa (job #901651) | Cod sursa (job #2149902) | Cod sursa (job #2358362)
#include <fstream>
using namespace std;
ifstream fin ("secventa.in");
ofstream fout ("secventa.out");
int a[500005], dq[500005];
int main()
{
int n, k, F = 1, L = 0, mn = 30005, mx = 0, pos = 0, pos2 = 0;
fin >> n >> k;
int x = 1, y = k;
for(int i = 1; i <= n; ++i) fin >> a[i];
for(int i = 1; i <= k; ++i) {
dq[++L] = a[i];
if(mn >= a[i]) mn = a[i], pos = i;
}
mx = mn;
for(int i = pos + 1; i <= n; ++i) {
if(a[i] > mx) {
int F = i, L = i - 1, mx1 = 30005, cnt = 0;
while(a[i] > mx) {
if(mx1 >= a[i]) pos2 = i, mx1 = a[i];
++cnt;
if(cnt <= k) dq[++L] = a[i];
else {
if(a[i] <= mx1) mx1 = a[i], dq[++L] = mx1, ++F, pos2 = i;
else if(dq[F] == mx1) {
++F;
dq[++L] = a[i];
mn = 30005;
for(int j = F; j <= L && mn != dq[F - 1]; ++j)
if(mn >= a[i]) mn = dq[j], pos = j;
mx1 = mn;
}
else ++F, dq[++L] = a[i];
if(mx1 > mx) mx = mx1, x = F, y = L;
}
++i;
}
if(cnt >= k) i = pos2 - 1;
}
}
fout << x << " " << y << " " << mx;
return 0;
}