Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #include <climits>
- #include <algorithm>
- #include <cstdlib>
- #define MAX 22
- using namespace std;
- struct raton {
- int p, v;
- };
- struct madriguera {
- int p, c;
- };
- int n, m, sol, mejorSol = INT_MAX;
- raton ratones[MAX];
- madriguera hoyos[MAX];
- void solve(int i) {
- if (i == n) {
- mejorSol = sol;
- return;
- }
- for (int j = 0; j < m; ++j) {
- if ((ratones[i].v <= hoyos[j].c) && (abs(ratones[i].p-hoyos[j].c) < mejorSol)) {
- int viejo = sol;
- hoyos[j].c -= ratones[i].v;
- sol = max(sol, abs(ratones[i].p-hoyos[j].c));
- solve(i+1);
- sol = viejo;
- hoyos[j].c += ratones[i].v;
- }
- }
- }
- bool compareR(raton lhs, raton rhs) { return lhs.p < rhs.p; }
- bool compareH(madriguera lhs, madriguera rhs) { return lhs.p < rhs.p; }
- int main () {
- scanf("%d", &n);
- for (int i = 0; i < n; ++i)
- scanf("%d%d", &ratones[i].p, &ratones[i].v);
- scanf("%d", &m);
- for (int i = 0; i < m; i++)
- scanf("%d%d", &hoyos[i].p, &hoyos[i].c);
- sort(ratones, ratones + n, compareR);
- sort(hoyos, hoyos + m, compareH);
- solve(0);
- if(mejorSol == INT_MAX) printf("-1\n");
- else printf("%d\n", mejorSol);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement