Pagini recente » Cod sursa (job #422387) | Cod sursa (job #2636895) | Cod sursa (job #1960419) | Cod sursa (job #908210) | Cod sursa (job #1844574)
#include <iostream>
#include <fstream>
#include <deque>
#include <cstring>
#define NMAX 500010
#define INF 1000000000
#define LS 5000000
using namespace std;
ifstream f ("secventa.in");
ofstream g ("secventa.out");
int v[NMAX], n, k, Max = -INF, pos;
char s[LS];
deque<int> d;
int cit(int &p)
{
int x=0,semn=1;
if(s[p]=='-'){semn=-1;p++;}
while(s[p]>='0' && s[p]<='9')
{
x=x*10+(s[p]-'0');
p++;
}
p++;
return semn*x;
}
int main()
{
f>>n>>k;
int j = 0;
f.get();
f.getline(s, LS);
for (int i = 1; i < k; i++)
{
v[i] = cit(j);
while (!d.empty() && v[d.back()] >= v[i]) d.pop_back();
d.push_back(i);
}
for (int i = k; i <= n; i++)
{
v[i] = cit(j);
if (!d.empty() && d.front() == i - k) d.pop_front();
while (!d.empty() && v[d.back()] >= v[i]) d.pop_back();
d.push_back(i);
if (Max < v[d.front()])
Max = v[d.front()], pos = i;
}
g<<pos - k + 1<<' '<<pos<<' '<<Max;
return 0;
}