Pagini recente » Cod sursa (job #1434735) | Cod sursa (job #1906464) | Cod sursa (job #2839844) | Cod sursa (job #1532009) | Cod sursa (job #348984)
Cod sursa(job #348984)
//100 puncte cu parsare, 80 fara
#include <cstdio>
#include <cstring>
#include <deque>
#define N 500001
#define M 4194304
#define inf 0x3f3f3f3f
using namespace std;
int V[N];
deque<int> DQ;
deque<int>::iterator it;
char S[M];
int main()
{
int n,k,i,poz,maxim=-inf,nr,kont=0,p;
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
scanf("%d%d\n",&n,&k);
fgets(S,M,stdin);
int len=strlen(S);
for (i=0; i<len; i++)
{
nr=0; p=1;
if (S[i]=='-')
{
p=-1;
i++;
}
for (; S[i]>='0' && S[i]<='9'; i++)
nr=10*nr+S[i]-'0';
V[++kont]=nr*p;
}
for (i=1; i<=n; i++)
{
while (!DQ.empty() && V[i]<=V[DQ.back()]) DQ.pop_back();
DQ.push_back(i);
if (DQ.front()<=i-k) DQ.pop_front();
if (i>=k && V[DQ.front()]>maxim)
{
maxim=V[DQ.front()];
poz=i;
}
}
printf("%d %d %d",poz-k+1,poz,maxim);
return 0;
}