ho fatto questo codice per il problema campo da calcio, fa bene i due casi test di esempio ma poi fa solo uno o due casi di test (alle volte 0).
Qualcuno sa aiutarmi?
#include <iostream>
#include <vector>
using namespace std;
constexpr int NMAX = 7002;
int foresta[NMAX][NMAX];
int prefix[NMAX][NMAX];
void solve(int t) {
int N, M, K, A, B;
cin >> N >> M >> K >> A >> B;
int x,y;
for (int i = 0; i < K; i++) {
cin >> x >> y;
foresta[x][y]++;
}
for (int i=1; i<=N; i++) {
for (int j=1; j<=M; j++) {
prefix[i][j] = prefix[i-1][j]+prefix[i][j-1]-prefix[i-1][j-1]+foresta[i-1][j-1];
}
}
int risposta = 1e9;
int tmp;
for (int i=0; i<=N; i++) {
for (int j=0; j<=M; j++) {
if (i+A <= N && j+B <= M) {
tmp = prefix[i+A][j+B] - prefix[i][B] - prefix[A][j] + prefix[i][j];
if (tmp < risposta) risposta = tmp;
}
}
}
cout << "Case #" << t << ": " << risposta << "\n";
}
int main() {
// se preferisci leggere e scrivere da file
// ti basta decommentare le seguenti due righe:
freopen("input.txt", "r", stdin);
freopen("output.txt", "w", stdout);
int T;
cin >> T;
for (int t = 1; t <= T; t++) {
solve(t);
}
return 0;
}