Cod sursa(job #1583996)

Utilizator razvandRazvan Dumitru razvand Data 29 ianuarie 2016 16:47:22
Problema Evaluarea unei expresii Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.64 kb
#include <iostream>
#include <fstream>
#include <algorithm>

using namespace std;

bool mat[1001];
bool mult[1001];
long long matr[1001];

ifstream in("expresie.in");
ofstream out("expresie.out");

int main() {

    int n;

    in >> n;

    for(int i = 0; i < n; i++)
        in >> matr[i];

    long long maxMult1 = 0;
    int maxMult1Poz = 0;

    long long maxMult2 = 0;
    int maxMult2Poz = 0;

    for(int i = 0; i < n-1; i++) {

        if(matr[i] * matr[i+1] > maxMult1) {

            maxMult1 = matr[i] * matr[i+1];
            maxMult1Poz = i;

            continue;

        }

        if(matr[i] * matr[i+1] > maxMult2) {

            maxMult2 = matr[i] * matr[i+1];
            maxMult2Poz = i;

        }

    }

    long long maxMult3 = 0;
    int maxMult3Poz = 0;

    for(int i = 0; i < n-2; i++) {

        if(matr[i] * matr[i+1] * matr[i+2] > maxMult3) {

            maxMult3 = matr[i] * matr[i+1] * matr[i+2];
            maxMult3Poz = i;

        }

    }

    long long sum = 0;

    for(int i = 0; i < n; i++) {
        if(i == maxMult1Poz)
            sum += maxMult1;
        else if(i == maxMult1Poz+1)
            sum += 0;
        else if(i == maxMult2Poz)
            sum += maxMult2;
        else if(i == maxMult2Poz+1)
            sum += 0;
        else
            sum += matr[i];
    }

    long long sum2 = 0;

    matr[maxMult3Poz] = maxMult3;
    matr[maxMult3Poz+1] = 0;
    matr[maxMult3Poz+2] = 0;

    for(int i = 0; i < n; i++)
        sum2 += matr[i];

    if(sum > sum2)
        out << sum;
    else
        out << sum2;

    return 0;
}