Ciao, stavo provando a risolvere cats ma non capisco dove sia il problema. La mia soluzione è stata dp con una matrice.
Ogni casella indica “soluzione migliore avendo gli indici dei maschi fino a i, e indici delle femmine fino a j”.
Ogni casella può venire da tre possibili azioni:
a) ho aggiunto un maschio e una femmina
b) ho aggiunto solo un maschio
c) ho aggiunto solo una femmina
#include <iostream>
#include <cmath>
#define MAXN 1001
using namespace std;
int M[MAXN], F[MAXN];
int nM, nF;
int r[MAXN][MAXN];
int main() {
freopen("input.txt","r",stdin);
cin >> nM >> nF;
for (int i = 0; i < nM; i++)
cin >> M[i];
for (int i = 0; i < nF; i++)
cin >> F[i];
int a,b,c,i,j;
for(i=0;i<nM;++i){
for(j=0;j<nF;++j){
a = abs(M[i]-F[j]);
b = c = 0;
if(i-1>=0 || j-1>=0) a = r[i-1][j-1]+abs(M[i]-F[j]);
if(i-1>=0) b = r[i-1][j];
if(j-1>=0) c = r[i][j-1];
r[i][j] = max(a,max(b,c));
}
}
cout << r[nM-1][nF-1] << endl;
}
La soluzione fa solo 25/100 sbagliando output, consigli?