Pagini recente » Cod sursa (job #2589140) | Cod sursa (job #1434144) | Cod sursa (job #2621835) | Cod sursa (job #2753287) | Cod sursa (job #1781957)
#include <cstdio>
#include <deque>
using namespace std;
char buff[8192];
int poz=0;
deque <int> deque1,deque2;
void citeste(int &numar){
int sg=1;
numar=0;
while((buff[poz]<'0'||buff[poz]>'9')&&buff[poz]!='-'){
poz++;
if(poz==8192){
fread(buff,1,8192,stdin);
poz=0;
}
}
if(buff[poz]=='-'){
poz++;
if(poz==8192){
fread(buff,1,8192,stdin);
poz=0;
}
sg=-1;
}
while(buff[poz]>='0'&&buff[poz]<='9'){
numar=numar*10+buff[poz]-'0';
poz++;
if(poz==8192){
fread(buff,1,8192,stdin);
poz=0;
}
}
numar*=sg;
}
int main()
{
freopen ("secventa.in","r",stdin);
freopen ("secventa.out","w",stdout);
int n,k,nr,i,x,st,dr,maxx=-30001;
fread(buff,1,8192,stdin);
citeste(n);
citeste(k);
for(i=1; i<=k; i++)
{
citeste(x);
if(!deque1.empty())
{
while(!deque1.empty()&&deque1.back()>=x)
{
deque1.pop_back();
deque2.pop_back();
}
}
deque1.push_back(x);
deque2.push_back(i);
}
maxx=deque1.front();
st=1;
dr=k;
for(i=k+1; i<=n; i++)
{
citeste(x);
if(!deque1.empty())
{
while(!deque1.empty()&&deque1.back()>=x)
{
deque1.pop_back();
deque2.pop_back();
}
}
deque1.push_back(x);
deque2.push_back(i);
if(deque2.front()<i-k+1)
{
deque2.pop_front();
deque1.pop_front();
}
if(deque1.front()>maxx)
{
maxx=deque1.front();
st=i-k+1;
dr=i;
}
}
printf("%d %d %d",st,dr,maxx);
return 0;
}