Pagini recente » Cod sursa (job #2000976) | Cod sursa (job #2029303) | Cod sursa (job #356683) | Cod sursa (job #461276) | Cod sursa (job #504791)
Cod sursa(job #504791)
#include <cstdio>
#include <fstream>
#define nmax 5000000
#define inf -10
using namespace std;
//FILE *fin=fopen("secventa.in", "r");
//FILE *fout=fopen("secventa.out", "w");
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int v[nmax], deque[nmax];
int front, back, n, k, maxim, pozi, pozj;
int main()
{
int i;
maxim = inf;
fin >> n >> k;
//fscanf(fin, "%d%d", &n, &k);
front = 1;
for(i=1; i<=n; ++i)
{
//fscanf(fin, "%d", &v[i]);
fin >> v[i];
while(front<=back && (v[i]<=v[deque[back]] || i-deque[back]>=k)) --back;
deque[++back] = i;
while(front<=back && i-deque[front]>=k) ++front;
if(i>=k)
if(maxim<v[deque[front]])
{
maxim=v[deque[front]];
pozi = i-k+1;
pozj = pozi+k-1;
}
}
fout << pozi << " " << pozj << " " << maxim;
//fprintf(fout, "%d %d %d", pozi, pozj, maxim);
}