Pagini recente » Cod sursa (job #984971) | Cod sursa (job #897732) | Cod sursa (job #90868) | Cod sursa (job #1258552) | Cod sursa (job #1755010)
#include<fstream>
using namespace std;
ifstream fin("secventa.in");
ofstream fout("secventa.out");
char buff[3000005];
int n,k,i,maxs=-30001,p,u,coada[500001],v[500001],st,fi,poz=0;
void read(int &numar){
char semn;
numar=0;
while(buff[poz]<'0' || buff[poz]>'9') {
semn=buff[poz];
poz++;
}
while(buff[poz]>='0' && buff[poz]<='9'){
numar=numar*10+buff[poz]-'0';
poz++;
}
if (semn=='-') numar=-numar;
}
int main(){
fin.get(buff,3000005,'\n');
read(n);
read(k);
fin.get();
poz=0;
fin.get(buff,3000005,'\n');
for (i=1;i<=n;i++)
read(v[i]);
fin.close();
p=1;u=0;
for (i=1;i<=n;i++){
while(p<=u && v[coada[u]]>v[i]) u--;
u++;
coada[u]=i;
if (i-coada[p]>=k) p++;
if (i>=k && maxs<v[coada[p]]){
if (i-coada[p]<k-1){
st=i-k+1;
fi=i;
maxs=v[coada[p]];
}
else{
st=coada[p];
fi=i;
maxs=v[coada[p]];
}
}
}
fout<<st<<" "<<fi<<" "<<maxs;
fout.close();
return 0;
}