Pagini recente » Cod sursa (job #2117957) | Cod sursa (job #1139653) | Cod sursa (job #1679188) | Cod sursa (job #2321962) | Cod sursa (job #718196)
Cod sursa(job #718196)
#include <fstream>
#include <iostream>
#include <iomanip>
#define dim 500001
using namespace std;
int n,k,baza,pozinit,a[dim];
void citire()
{
int i;
ifstream f1;
f1.open("secventa.in");
f1>>n;
f1>>k;
for(i=1;i<=n;i++)
{
f1>>a[i];
}
f1.close();
}
void scriere()
{
ofstream f2;
f2.open("secventa.out");
f2<<pozinit<<" "<<pozinit+k-1<<" "<<baza;
f2.close();
}
void prelucrare()
{
int i,st=1,dr=1;
int deque[n];
baza=-999999999;
deque[1]=1;
for (i=2;i<k;i++)
{
while ((a[deque[dr]]>=a[i])and(dr>=st))
dr--;
dr++;
deque[dr]=i;
}
for(i=k;i<=n;i++)
{
while ((a[deque[dr]]>=a[i])and(dr>=st))
dr--;
dr++;
deque[dr]=i;
if (a[deque[st]]>baza)
{
baza=a[deque[st]];
pozinit=i+1-k;
}
if (deque[st]<i+2-k)
st++;
}
}
int main()
{
citire();
prelucrare();
scriere();
return 0;
}