Cod sursa(job #810182)

Utilizator ericptsStavarache Petru Eric ericpts Data 9 noiembrie 2012 20:09:12
Problema Secventa Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.19 kb
#include <cstdio>

using namespace std;

short int v[500010];
char buff[500010 *15];
#define max 30000

char *p;

short int evaluate()
{
    while(*p == ' ' || *p == '\n')
        ++p;
    bool semn = 0;
    short int ret = 0;
    if(*p == '-')
    {
        semn = 1;
        ++p;
    }
    while(*p <= 9 && *p >= 0)
        ret = ret * 10 + *(p++)-'0';
    if(semn)
        ret *= -1;
    return ret;
}

int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    int n,i,k;
    scanf("%d%d",&n,&k);
    gets(buff);
    p = buff;
    for(i=1;i<=n;++i)
        v[i] = evaluate();
    int baza = max;
    int bazamax,inceput;
    for(i=1;i<=k;++i)
        if(v[i] < baza)
            baza = v[i];
    bazamax = baza;
    inceput = 1;
    int j;
    for(i=k+1;i<=n;++i)
    {
        if(v[i-k] == baza)
        {
            baza = max;
            for(j=i-k+1;j<=i;++j)
            if(v[j] < baza)
                baza = v[j];
        }
        if(baza > bazamax)
        {
            inceput = i-k+1;
            bazamax = baza;
        }
    }
    printf("%d %d %d\n",inceput,inceput+k-1,bazamax);
    return 0;
}