Pagini recente » Cod sursa (job #2234320) | Cod sursa (job #374683) | Cod sursa (job #2715814) | Cod sursa (job #1376568) | Cod sursa (job #1874142)
#include <iostream>
#include <fstream>
#define dim 500001
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
int n,k,mini,pozi,pozj,c=0,contor,st[dim],a[dim],maxim;
void minhip(int st[],int i)
{
int s,d,aux;
s=2*i;
d=2*i+1;
if(s<=k&&st[s]<st[i])
mini=s;
else
mini=i;
if(d<=k&&st[d]<=st[mini])
mini=d;
if(i!=mini)
{
aux=st[i];
st[i]=st[mini];
st[mini]=aux;
minhip(st,mini);}
}
int main()
{
fin>>n>>k;
for(int i=1;i<=n;i++)
fin>>a[i];
for(int j=1;j<=k;j++)
st[j]=a[j];
minhip(st,1);
maxim=st[1];
pozi=1;
pozj=k;
for(int i=k+1;i<=n;i++)
{
int sw=1;
for(int j=1;j<=k&&sw;j++)
if(st[j]==a[i-k])
{st[j]=a[i];
sw=0;}
minhip(st,1);
if(maxim<st[1])
{
maxim=st[1];
pozi=i-pozj+pozi;
pozj=i;
c=1;
}
else if(maxim==st[1]&&c==1)
{
if(pozj>i)
{
pozi=i-pozj+pozi;
pozj=i;
}
c++;
}
else if(maxim==st[1]&&c>1)
{
if(pozi>(i-pozj+pozi))
{
pozi=i-pozj+pozi;
pozj=i;
}
c++;
}
}
fout<<pozi<<" "<<pozj<<" "<<maxim;
return 0;
}