Cześć!
Rozwiązuje takie zadanko: https://codeforces.com/contest/489/submission/114363891
Pomysł taki, dla każdego chłopca sprawdzamy każdą dziewczynę, jeśli mogą stworzyć parę to zaznaczamy że ta dziewczyna jest przydzielona do chłopca i oraz zwiększamy prawdobobne party tego chłopca. Zaznaczamy dziewczynę tylko wtedy gdy ona nie miała jeszcze żadnego partnera lub parnter z którym jest ma więcej niż 1 możliwość pary. Na koniec sprawdzamy który z chłopców ma więcej niż 0 możliwości pary.
Mój program daje zbyt małe wyniki, niestety nie mam dostępu do testu.
Kod:
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define ull unsigned long long
const ll INF = 1e9 + 7, MAXN = 100 + 7;
vector<int> a(MAXN), b(MAXN), poss(MAXN, 0), rep(MAXN, -1);
void solve(){
int n, m;
cin >> n;
for (int i = 0; i < n; i++)
cin >> a[i];
cin >> m;
for (int i = 0; i < m; i++)
cin >> b[i];
for (int i = 0; i < n; i++)
for (int j = 0; j < m; j++)
if (abs(a[i] - b[j]) <= 1)
if (rep[j] == -1 || poss[rep[j]] > 1){
if (rep[j] != -1)
poss[rep[j]]--;
rep[j] = i;
poss[i]++;
}
int ans = 0;
for (int i = 0; i < n; i++)
ans += poss[i] > 0;
cout << ans << "\n";
}
void testcases(){
int t;
cin >> t;
while(t){
solve();
t--;
}
}
int main(){
ios::sync_with_stdio(0);
cin.tie(nullptr); cout.tie(nullptr);
//testcases();
solve();
return 0;
}
Mógłby ktoś pomóc mi zrozumieć dlaczego mój program nie działa poprawnie?