Cod sursa(job #72460)

Utilizator andrei_infoMirestean Andrei andrei_info Data 13 iulie 2007 21:49:46
Problema Buline Scor 0
Compilator cpp Status done
Runda Arhiva de probleme Marime 0.97 kb
#include <stdio.h>
#include <stdlib.h>
#include <values.h>
#define max 200001
int n, a[max], s[max], t[max];

void citire()
{
        freopen("buline.in","r",stdin);
        scanf("%d", &n);
        int aux;
        for (int i=1; i<=n; i++)
        {
                scanf("%d %d", &a[i], &aux);
                if (aux == 0) a[i]*=-1;
        }
        fclose(stdin);
}

inline int MAX( int a, int b)
{
        if (a>b) return a;
        else    return b;
}

void solve()
{
        t[1]=s[1]=a[1];
        for (int i = 2; i<=n; i++)
                s[i] =s[i-1] + a[i];

        for ( int i =2; i<=n; i++)
                t[i] = MAX( t[i-1], s[i] );

        int rez=-MAXINT;
        for (int i = 2; i<=n; i++)
                rez = MAX ( t[i-1] + s[n]-s[i-1], rez);

        freopen("buline.out", "w", stdout);
        printf("%d 1 1", rez);
        fclose(stdout);
}
 
int main()
{
        citire();
        solve();

        return 0;
}