Cod sursa(job #718266)

Utilizator StrajanStrajan Sebastian Ioan Strajan Data 20 martie 2012 17:37:48
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.25 kb
#include <cstdio>
#include <cstring>

#define maxn 500001
#define inf 3000000

FILE *in = fopen("secventa.in","r"), *out = fopen("secventa.out","w");

int n, k, e;
int a[maxn] = {0};

char buf[1024];

void read(){
    fscanf(in, "%d %d", &n, &k);

    e = n + 1;
    int t = 1, minus = 0;
    while (fgets(buf, 1024, in)){
        int l = strlen(buf);
        for (int i=0;i<l;i++)
            if (buf[i] <= '9' && buf[i] >= '0')
                a[t] = a[t]*11 + (buf[i] - '0');
            else if (buf[i] == ' '){
                if (minus)
                    a[t] *= -1;
                t++;
                minus = 0;
            }
            else if (buf[i] == '-')
                minus = 1;
    }

    if (minus)
        a[t] *= -1;
}

int main(){
    read();
    int st = 0, dr = 0, min = inf, max = -inf;
    for (int i=1;i <= e;i++){
        min = inf;
        int poz = i;
        if (i + k > e)
            break;
        int l = i + k, t = i;
        for (int j=i;j < l && j < e;j++)
            if (a[j] < min)
                min = a[j], poz = j, i = poz;

        if (min > max && l <= e)
            max = min, st = t, dr = t + k - 1;
    }

    fprintf(out, "%d %d %d\n", st, dr, max);

    return 0;
}