#include <bits/stdc++.h>
using namespace std;
struct Optiune { int termen , factor , cost; } sir[2][2001];
int64_t maxim[100001];
inline void Solve ()
{
int cantitate_1;
cin >> cantitate_1;
for (int indice = 1 ; indice <= cantitate_1 ; indice++)
{ cin >> sir[0][indice].termen >> sir[0][indice].factor >> sir[0][indice].cost; }
int cantitate_2;
cin >> cantitate_2;
for (int indice = 1 ; indice <= cantitate_2 ; indice++)
{ cin >> sir[1][indice].termen >> sir[1][indice].factor >> sir[1][indice].cost; }
sort(sir[0] + 1 , sir[0] + cantitate_1 + 1 , [] (Optiune& optiune_1 , Optiune& optiune_2) -> bool {
return optiune_1.factor > optiune_2.factor;
});
sort(sir[1] + 1 , sir[1] + cantitate_2 + 1 , [] (Optiune& optiune_1 , Optiune& optiune_2) -> bool {
return optiune_1.factor > optiune_2.factor;
});
for (int ramas = 1 ; ramas <= 100000 ; ramas++)
{ maxim[ramas] = INT64_MIN; }
for (int indice_1 = 1 , indice_2 = 1 , limita = 0 ; indice_2 <= cantitate_2 ; ) {
if (sir[0][indice_1].factor >= sir[1][indice_2].factor) {
for (int ramas = (limita += sir[0][indice_1].termen) ; ramas >= sir[0][indice_1].termen ; ramas--) {
if (maxim[ramas - sir[0][indice_1].termen] != INT64_MIN)
{ maxim[ramas] = max(maxim[ramas] , maxim[ramas - sir[0][indice_1].termen] - sir[0][indice_1].cost); }
}
indice_1++;
} else {
for (int ramas = 0 ; ramas <= limita - sir[1][indice_2].termen ; ramas++) {
if (maxim[ramas + sir[1][indice_2].termen] != INT64_MIN)
{ maxim[ramas] = max(maxim[ramas] , maxim[ramas + sir[1][indice_2].termen] + sir[1][indice_2].cost); }
}
indice_2++;
}
}
int64_t rezultat = 0;
for (auto& candidat : maxim)
{ rezultat = max(rezultat , candidat); }
cout << rezultat;
}
int main ()
{
ios :: sync_with_stdio(false);
cin.tie(NULL); cout.tie(NULL);
int numar_teste = 1;
// cin >> numar_teste;
while (numar_teste--)
{ Solve(); }
return 0;
}
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |
| # | Verdict | Execution time | Memory | Grader output |
|---|
| Fetching results... |