Pagini recente » Cod sursa (job #1303181) | Cod sursa (job #669097) | Cod sursa (job #1509938) | Cod sursa (job #1216867) | Cod sursa (job #2044384)
#include <fstream>
#include <deque>
using namespace std;
FILE *fin=fopen("secventa.in","r");
ofstream fout("secventa.out");
struct elem
{
int x, poz;
};
int n, k, maxim=-999999, pozMax;
elem v[500005];
deque<elem> d;
int main()
{
int i;
fscanf(fin,"%d%d",&n,&k);
for (i=1;i<=k;i++)
{
fscanf(fin,"%d",&v[i].x);
v[i].poz = i;
while (!d.empty() && d.back().x >= v[i].x)
d.pop_back();
d.push_back(v[i]);
}
if (d.front().x > maxim)
{
maxim = d.front().x;
pozMax = 1;
}
for (i=k+1;i<=n;i++)
{
if (d.front().poz < i-k+1)
d.pop_front();
fscanf(fin,"%d",&v[i].x);
v[i].poz = i;
while (!d.empty() && d.back().x >= v[i].x)
d.pop_back();
d.push_back(v[i]);
if (d.front().x > maxim)
{
maxim = d.front().x;
pozMax = i-k+1;
}
}
fout << pozMax << ' ' << pozMax+k-1 << ' ' << maxim << '\n';
return 0;
}