Cod sursa(job #810907)

Utilizator PatrikStepan Patrik Patrik Data 11 noiembrie 2012 11:36:58
Problema Secventa Scor 60
Compilator cpp Status done
Runda Arhiva de probleme Marime 1.51 kb
    #include<cstdio>
    #define MAX 500001
    using namespace std;
    FILE *f;
    int n , k , v[MAX] , poz , max ;
    char s;

    void citire();
    void solve();
    void tipar();

    int main()
    {
        citire();
        solve();
        tipar();
        return 0;
    }

    void citire()
    {
        freopen("secventa.in" , "r" , stdin);
        scanf("%d%d\n" , &n , &k );
        int i = 1 , semn = 1;
        while(scanf("%c" , &s) && s != '\n')
        {
            if(s == ' ')
            {
                v[i] *= semn ;
                semn = 1;
                i++;
            }
            if(s == '-')semn = -1;
            if(s <= '9' && s >= '0')
                v[i] = v[i] * 10 + s - 48;
        }
    }

    void solve()
    {
        int baza = v[1] ;
        for( int i = 2 ; i<= k ; ++i )
            if(v[i] < baza)
                baza = v[i];
        max = baza;
        poz = 1;
        for( int i = k+1 ; i <= n ; ++i )
        {
            if(v[i-k] == baza )
            {
                baza = v[i-k+1];
                for(int j = i-k+2 ; j <= i ; ++j )
                    if(v[j] < baza )
                        baza  = v[j];
                if(baza > max )
                {
                    max = baza;
                    poz = i-k+1;
                }
            }
        }
    }

    void tipar()
    {
          freopen("secventa.out" , "w" , stdout);
          printf("%d %d %d" , poz , poz+k-1 , max );
    }