Cod sursa(job #1388692)

Utilizator kagy85Kolumban Antal kagy85 Data 15 martie 2015 17:32:39
Problema Secventa Scor 60
Compilator c Status done
Runda Arhiva de probleme Marime 1.05 kb
#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;

int main()
{
    FILE * fi, *fo;
    short t, minim=(-MIN_V)+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++)
    {
        fscanf(fi, "%hd", &t);
        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)&&(minim>mini_max))
        {
            mini_max=minim;
            mini_max_idx=i;
        }
    }
    fprintf(fo, "%lu %lu %ld", mini_max_idx-k+2, mini_max_idx+1, mini_max);
    fclose(fi);
    fclose(fo);

    return 0;
}