Nu aveti permisiuni pentru a descarca fisierul grader_test8.in

Cod sursa(job #2503561)

Utilizator KernelovicNegrean Victor Kernelovic Data 3 decembrie 2019 13:50:00
Problema Energii Scor 0
Compilator cpp-64 Status done
Runda Arhiva de probleme Marime 1.07 kb
#include <bits/stdc++.h>
#define MAXIM 10001

using namespace std;

int dp[MAXIM];

int main()
{
    freopen("energii.in", "r", stdin);
    freopen("energii.out", "w", stdin);

    int nr, w, EG, CG, z, pos, mine = -1;
    cin >> nr >> w;

    for(int i = 0; i <= w; i++)
    {
        dp[i] = -1;
    }

    for(int i = 0; i < nr; i++)
    {
        cin >> EG >> CG;

        for(int j = w; j >= 0; j--)
        {
            if(dp[j] != -1)
            {
                z = dp[j] + CG;
                pos = EG + j;

                if(pos >= w && (mine == -1 || z == mine))
                {
                    mine = z;
                }
                else if(pos < w && (dp[pos] == -1 || z < dp[pos]))
                {
                    dp[pos] = z;
                }
            }
        }

        if(EG >= w && (mine == -1 || CG < mine))
        {
            mine = CG;
        }
        else if(EG < w && (dp[EG] == -1 || CG < dp[EG]))
        {
            dp[EG] = CG;
        }
    }

    cout << mine;
    return 0;
}