Pagini recente » Cod sursa (job #9250) | Cod sursa (job #144168) | Cod sursa (job #2759890) | Cod sursa (job #14524) | Cod sursa (job #2337328)
#include <fstream>
#define NM 500006
using namespace std;
ifstream f("secventa.in");
ofstream g("secventa.out");
int n,k,fr,bk,i,max1,pi,pj;
int d[NM],a[NM];
void afla(int i,int bk,int &max1,int &pi,int &pj){
if((i-1)-d[bk]+1>=k){
if(max1<a[d[bk]]){ max1=a[d[bk]]; pi=d[bk]; pj=i-1; }
else
if(max1==a[d[bk]]){
if(pi>d[bk]) { pi=d[bk]; pj=i-1; }
else
if(pi==d[bk]) pj=min(i-1,pj);
}
}
}
int main()
{
f>>n>>k;
fr=1; bk=0;
for(i=1;i<=n;i++){
f>>a[i];
while(fr<=bk&&a[d[bk]]>=a[i]){
afla(i,bk,max1,pi,pj);
bk--;
}
d[++bk]=i;
}
for(i=1;i<=bk;i++){
if(n-d[i]+1>=k) afla(n+1,i,max1,pi,pj);
}
g<<pi<<' '<<pj<<' '<<max1<<'\n';
return 0;
}