Cod sursa(job #810187)

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

using namespace std;

short int v[500010];
#define max 30000

char *p;

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

int main()
{
    freopen("secventa.in","r",stdin);
    freopen("secventa.out","w",stdout);
    short int n,i,k;
    int size;
    fseek(stdin,0,SEEK_END);
    size = ftell(stdin);
    p = (char*) malloc(size);
    rewind(stdin);
    fread(p,1,size,stdin);
    evaluate(n);
    evaluate(k);
    for(i=1;i<=n;++i)
        evaluate(v[i]);
    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;
}