Cod sursa(job #2526580)

Utilizator Vinti03Vintilescu Andrei Florin Vinti03 Data 18 ianuarie 2020 20:29:02
Problema Problema rucsacului Scor 100
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 0.86 kb
#include <bits/stdc++.h>

using namespace std;
ifstream fin("rucsac.in");
ofstream fout("rucsac.out");
int n,wt,i,j,t[3][10007],ap[10007];
struct valori
{
    int wt,p;
}v[10007];
void citire()
{
    for(i = 1; i <= n; i++)
        fin >> v[i].wt >> v[i].p;
}
bool cmp(valori a, valori b)
{
    if(a.wt != b.wt)
        return a.wt<b.wt;
    else
        return a.p<b.p;
}
void p_dinamica()
{
    for(i = 1; i <= n; i++)
    {
        for(j = 1; j <= wt; j++)
            if(j < v[i].wt)
                t[2][j] = t[1][j];
            else
                t[2][j] = max(v[i].p+t[1][j-v[i].wt],t[1][j]);
        for(j = 1; j <= wt; j++)
            t[1][j] = t[2][j];
    }
}
void afisare()
{
    fout << t[2][wt];
}
int main()
{
    fin >> n >> wt;
    citire();
    sort(v+1,v+n+1,cmp);
    p_dinamica();
    afisare();
    return 0;
}