Pagini recente » Cod sursa (job #3282498) | Cod sursa (job #1891380) | Cod sursa (job #999881) | Cod sursa (job #1021665) | Cod sursa (job #1346276)
#include <deque>
#include <stdio.h>
struct str
{
int val,pos;
} v[500001];
std::deque<str> d;
int main()
{
FILE *fin,*fout;
fin=fopen("secventa.in","r");
fout=fopen("secventa.out","w");
int n,k,p1;
short max=-31000;
fscanf(fin,"%d %d",&n,&k);
for(int i=1;i<=n;i++)
{
fscanf(fin,"%d",&v[i].val);
v[i].pos=i;
}
for(int i=1;i<k;i++)
{
while(d.size()&&d.back().val>v[i].val)
{
d.pop_back();
}
d.push_back(v[i]);
}
for(int i=k;i<=n;i++)
{
if(d.front().pos<=i-k)
{
d.pop_front();
}
while(d.size()&&d.back().val>v[i].val)
{
d.pop_back();
}
d.push_back(v[i]);
if(max<d.front().val)
{
max=d.front().val;
p1=i;
}
}
fprintf(fout,"%d %d %d\n",p1-k+1,p1,max);
return 0;
}