Pagini recente » Cod sursa (job #583072) | Cod sursa (job #1757933) | Cod sursa (job #2194747) | Cod sursa (job #566698) | Cod sursa (job #1714950)
#include <cstdio>
#include <deque>
#include <cstring>
using namespace std;
deque <int> q;
char s[5000005];
int v[500005];
int main()
{
freopen("secventa.in","r",stdin);
freopen("secventa.out","w",stdout);
int n,k,i=0,maxx=-3000000,sf,nr,cnt=0;
bool sem;
scanf("%d%d\n",&n,&k);
gets(s);
while(i<strlen(s))
{
if(s[i]==' ')
{
sem=0;
i++;
}
if(s[i]=='-')
{
sem=1;
i++;
}
nr=0;
while(s[i]>='0' and s[i]<='9')
{
nr=nr*10+(s[i]-'0');
i++;
}
if(sem==1) nr*=-1;
cnt++;
v[cnt]=nr;
}
//for(i=1;i<=n;i++) printf("%d ",v[i]);
for(i=1;i<=n;i++)
{
while(!q.empty())
{
if(v[q.back()] >= v[i] ) q.pop_back();
else break;
}
q.push_back(i);
while(q.front() < i-k+1) q.pop_front();
if(i>=k and v[q.front()]>maxx)
{
maxx=v[q.front()];
sf=i;
}
}
printf("%d %d %d\n",sf-k+1,sf,maxx);
return 0;
}