Pagini recente » Cod sursa (job #175511) | Cod sursa (job #2694779) | Cod sursa (job #1719221) | Cod sursa (job #2729025) | Cod sursa (job #1388729)
#include <stdio.h>
#include <stdlib.h>
//elemek szam
#define MAXN 500001
#define MAXNR 60001
//a minmum etek
#define MIN_V -30000
#define A 30000
short a[MAXN];
unsigned char v[MAXNR]={0};
unsigned long n, k, o;
short read_short(FILE * f)
{
short r=0;
char ct=fgetc(f), minus=0;
while ((ct=='\n')||(ct==' '))
ct=fgetc(f);
if (ct=='-')
{
minus=1;
ct=fgetc(f);
}
do
{
r=10*r+(ct-'0');
ct=fgetc(f);
}
while ((ct>='0')&&(ct<='9'));
return minus ? -r : r;
}
int main()
{
FILE * fi, *fo;
short t, minim=A+1, mini_max=MIN_V-1;
unsigned long i, j, mini_max_idx=0;
o=0;
fi=fopen("secventa.in", "rt");
fo=fopen("secventa.out", "wt");
fscanf(fi, "%lu%lu", &n, &k);
for (i=0; i!=n; i++)
{
t=read_short(fi);
if (i>=k)
{
v[a[i-k]+A]--;
if ((v[a[i-k]+A]==0)&&(a[i-k]==minim))
{
for (j=a[i-k]+A; v[j]==0; j++); //uj minimum kereses
minim=j-A;
}
}
a[i]=t;
v[t+A]++;
if (t<minim)
minim=t;
if ((i>=k-1)&&(minim>mini_max))
{
mini_max=minim;
mini_max_idx=i;
}
}
fprintf(fo, "%lu %lu %hd", mini_max_idx-k+2, mini_max_idx+1, mini_max);
fclose(fi);
fclose(fo);
return 0;
}