Cod sursa(job #2359095)

Utilizator papinub2Papa Valentin papinub2 Data 28 februarie 2019 17:00:06
Problema Euro Scor 10
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.11 kb
#include <fstream>
#include <vector>
#include <algorithm>
#define inf 9000000000000000000

using namespace std;

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

void backtracking (int k, int n, int T, long long&maxim, vector<int>&q, vector<int>&v)
{
    if (k == n)
    {
        int sum = 0;
        long long lei = 0;
        for (int i = 1; i < n; i++)
        {
            sum = sum + v[i];
            if (q[i] == 1)
            {
                lei = lei + 1LL * sum * i - 1LL * T;
                sum = 0;
            }
        }
        sum = sum + v[n];
        lei = lei + 1LL * sum * n - 1LL * T;

        maxim = max(maxim, lei);
        return;
    }

    q[k] = 0;
    backtracking(k + 1, n, T, maxim, q, v);
    q[k] = 1;
    backtracking(k + 1, n, T, maxim, q, v);
}

int main()
{
    int n, T;
    long long maxim = -inf;

    in.sync_with_stdio(false);
    in >> n >> T;

    vector<int> v(n + 1);
    vector<int> q(n + 1);

    for (int i = 1; i <= n; i++)
        in >> v[i];

    backtracking(1, n, T, maxim, q, v);

    out << maxim;
    return 0;
}