Pagini recente » Cod sursa (job #169758) | Cod sursa (job #1072019) | Cod sursa (job #600201) | Cod sursa (job #716600) | Cod sursa (job #2701998)
#include <bits/stdc++.h>
using namespace std;
ifstream fin ("secventa.in");
ofstream fout ("secventa.out");
int n , k , a[500001];
char s[3800000];
deque <int> q;
int p , M;
int main()
{
int i , x,semn = 0, j = 0;
fin >> n >> k;
fin.get();
fin.getline(s,3800000);
for (i = 0; s[i]; )
{
if (s[i] == ' ') i++;
else if (s[i] == '-')
{
semn = 1;
i++;
}
else if (isdigit(s[i]))
{
x = 0;
while (isdigit(s[i]))
{
x = x * 10 + s[i] - '0';
i++;
}
if (semn == 1)
a[++j] = -x;
else a[++j] = x;
semn = 0;
}
}
for (i = 1;i <= k;i++)
{
x = a[i];
while (!q.empty() && a[q.back()] >= x)
q.pop_back();
q.push_back(i);
}
M = a[q.front()];
p = i;
for (i = k + 1;i <= n;i++)
{
x = a[i];
while (!q.empty() && a[q.back()] >= x)
q.pop_back();
q.push_back(i);
if (i - k >= q.front()) q.pop_front();
if (M < a[q.front()])
{
M = a[q.front()];
p = i;
}
}
fout << p - k + 1 << " " << p << " " << M;
return 0;
}