Pagini recente » Cod sursa (job #53077) | Cod sursa (job #2239059) | Cod sursa (job #2158559) | Cod sursa (job #2873999) | Cod sursa (job #2204959)
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <bitset>
#define DIMBUFF 100000
using namespace std;
FILE *fin=fopen ("secventa.in","r");
FILE *fout=fopen ("secventa.out","w");
int n,k,i,u,p,d[500010],v[500010],ok,maxi,maxok,dr;
char buff[DIMBUFF];int pp;
int numar() {
int val = 0;
while (!(buff[pp] >= '0' && buff[pp] <= '9')) {
pp++;
if (pp == DIMBUFF) {
fread(buff, 1, DIMBUFF, fin);
pp=0;
}
}
while (buff[pp] >= '0' && buff[pp] <= '9') {
val = val*10 + buff[pp] - '0';
pp++;
if (pp == DIMBUFF) {
fread(buff, 1, DIMBUFF, fin);
pp=0;
}
}
return val;
}
int main()
{
fread(buff, 1, DIMBUFF, fin);
n=numar();
k=numar();
maxi=-30010;
for(i=1;i<=n;i++)
v[i]=numar();
ok=0;
p=1;
u=1;
d[p]=1;
for(i=2;i<=n;i++)
{
while(p<=u&&v[i]<=v[d[u]])
u--;
u++;
d[u]=i;
if(i-d[p]==k)
p++;
if(i>=k)
{
ok++;
if(maxi<v[d[p]])
{
maxi=v[d[p]];
maxok=ok;
}
}
}
fprintf (fout,"%d %d %d",maxok, maxok+k-1, maxi);
//fout<<maxok<<" "<<maxok+k-1<<" "<<maxi;
return 0;
}