Pagini recente » Istoria paginii preoni-2008/runda-finala/solutii | Cod sursa (job #1053648) | Cod sursa (job #1514126) | Cod sursa (job #2251369) | Cod sursa (job #814927)
Cod sursa(job #814927)
#include <cstdio>
#include <cstdlib>
#include <cstring>
int v[500001],deque[500001];
int min,max,baza = -30001,n,k;
int b;
int citire(FILE f)
{
}
int main ()
{
FILE *f,*g;
f = fopen("secventa.in","r");
g = fopen("secventa.out","w");
fscanf(f,"%d %d",&n,&k);
for ( int i = 1; i <= n ; i++ )
fscanf(f,"%d",&v[i]);
char c = fgetc(f);
int semn,x,i = 1;
while (c != EOF)
{
if ( c == '-' ) semn = -1;
else if ( c >= '0' && c <= '9' ) x = x*10 + c - '0';
else if ( c == '\n')
{
v[i++] = x*semn;
semn = 1;
x = 0;
}
c = fgetc(f);
}
min = 1;
max = 0;
b = 0;
for ( int i = 1; i <= n ; i++ )
{
while ( v[i] < v[deque[max]] && max >= min ) max--;
deque[++max] = i;
if ( deque[min] == i-k ) min++;
if ( i >= k && baza < v[deque[min]] )
{
baza = v[deque[min]];
b = i;
}
}
fprintf(g,"%d %d %d",b-k+1,b,baza);
fclose(f);
fclose(g);
return 0;
}