Pagini recente » Cod sursa (job #113513) | Rating Mirea Costin-Alexandru (EuMirea21) | Cod sursa (job #1647856) | Cod sursa (job #2812963) | Cod sursa (job #1874181)
#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,j;
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);}
}
void inserteaza(int i,int j,int st[])
{
for(int x=i;x<j;x++)
st[x]=st[x+1];
}
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];
for(int i=k/2;i>=1;i--)
minhip(st,i);
maxim=st[1];
pozi=1;
pozj=k;
for(int i=k+1;i<=n;i++)
{
int aux,p,sw=1;
for(j=1;j<=k&&sw;j++)
if(st[j]==a[i-k])
{inserteaza(j,k,st);
sw=0;
p=k;
st[k]=a[i];
if(st[p]<st[k/2]&&(k/2)>=1)
{
for(j=k/2;j>=1;j--)
if(st[p]<st[j])
{
aux=st[p];
st[p]=st[j];
st[j]=aux;
p=j;
}
}}
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;
}