Cod sursa(job #1920263)

Utilizator 41xofSav Cristian-Theodor 41xof Data 9 martie 2017 23:15:27
Problema Problema rucsacului Scor 0
Compilator cpp Status done
Runda Arhiva educationala Marime 1.18 kb
#include <fstream>

using namespace std;

ifstream f("rucsac.in");
ofstream g("rucsac.out");

int suma(int **v, int n, int a, int j)
{
    int s = 0;
    for(int i=a; i<n; i++)
    {
        s += v[i][j];
    }
    return s;
}

void sortMatrix(int **v, int n)
{
    bool swapp = true;
    while(swapp)
    {
        swapp = false;
        for (int i = 0; i < n; i++)
        {
            if (v[i][1]>v[i+1][1])
            {
                v[i][1] += v[i+1][1];
                v[i+1][1] = v[i][1] - v[i+1][1];
                v[i][1] -=v[i+1][1];
                v[i][0] += v[i+1][0];
                v[i+1][0] = v[i][0] - v[i+1][0];
                v[i][0] -=v[i+1][0];
                swapp = true;
            }
        }
    }
}

int main()
{
    int N,G;
    int** v;
    int Pmax = 0;
    f >> N >> G;
    v = new int*[5000];
    for (int i = 0; i < 5000; i++)
    {
        v[i] = new int[2];
    }
    for(int i = 0; i < N; i++)
    {
        f >> v[i][0] >> v[i][1];
    }
    sortMatrix(v, N);
    int a = 0;
    while (suma(v, N, a, 0) >= G)
    {
        a++;
    }
    g << suma(v, N, a-1, 1);
    f.close();
    g.close();
}