Pagini recente » Cod sursa (job #2709882) | Cod sursa (job #3149620) | Cod sursa (job #3149579) | Cod sursa (job #1454838) | Cod sursa (job #812472)
Cod sursa(job #812472)
#include<cstdio>
#include<vector>
using namespace std;
int n,k;
int maxim;
vector <int> v;
vector <int> deq;
vector <int> poz;
void scan()
{
char c;
int a=0,sgn=1;
scanf("%d%d ",&n,&k);
while (scanf("%c",&c)!=EOF)
{
if (c==' ' || c=='\n')
{
a=a*sgn;
v.push_back(a);
a=0;
sgn=1;
continue;
}
if (c=='-')
{
sgn=-1;
continue;
}
a=a*10+c-'0';
}
}
void deque()
{
int i,a,w=0;
int st,dr,inc,sf;
st=0;
dr=-1;
maxim=-30001;
for (i=1;i<=n;i++)
{
a=v[i-1];
while (dr>=st && deq[dr]>a)
{
dr--;
}
dr++;
if (dr==deq.size())
{
deq.push_back(a);
poz.push_back(i);
}
else
{
deq[dr]=a;
poz[dr]=i;
}
if (i-poz[st]+1>k)
st++;
if (i>=k)
{
if (maxim<deq[st])
{
inc=i-k+1;
sf=i;
maxim=deq[st];
}
}
}
printf("%d %d %d\n",inc,sf,maxim);
}
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scan();
deque();
return 0;
}