Cod sursa(job #810392)

Utilizator ericptsStavarache Petru Eric ericpts Data 10 noiembrie 2012 11:05:33
Problema Secventa Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.26 kb
#include <cstdio>
#include <cstdlib>

char * buffer;

void read(int & a)
{
    a ^= a;
    bool semn = 0;
    while(*buffer < '0' || *buffer > '9')
        if(*(buffer++) == '-')
            semn = 1;
    while(*buffer <= '9' && *buffer >= '0')
        a = a * 10 + *(buffer++) - '0';
    if(semn)
        a*=(-1);
}

#define max (1 << 30)

int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    int size;
    fseek(stdin,0,SEEK_END);
    size = ftell(stdin);
    buffer = (char*) malloc(size);
    rewind(stdin);
    fread(buffer,1,size,stdin);
    int n,k;
    int a[500010];
    int i;
    read(n);
    read(k);
    int baza,bazamax,poz;
    for(i=1;i<=n;++i)
        read(a[i]);
    baza = a[1];
    for(i=2;i<=k;++i)
        if(a[i] < baza)
            baza = a[i];
    bazamax = baza;
    poz = 1;
    int j;
    for(i=k+1;i<=n;++i)
    {
        if(a[i-k] == baza)
        {
            baza = max;
            for(j=i-k+1;j<=i;++j)
                if(a[j] < baza)
                    baza = a[j];
            if(baza > bazamax)
            {
                bazamax = baza;
                poz = i-k+1;
            }
        }
    }
    printf("%d %d %d",poz,poz+k-1,bazamax);
}