Advertisement
Alexvans

Untitled

Sep 6th, 2017
129
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.13 KB | None | 0 0
  1. #include <cstdio>
  2. #include <climits>
  3. #include <algorithm>
  4. #include <cstdlib>
  5. #define MAX 22
  6. using namespace std;
  7.  
  8. struct raton {
  9.     int p, v;
  10. };
  11.  
  12. struct madriguera {
  13.     int p, c;
  14. };
  15.  
  16. int n, m, sol, mejorSol = INT_MAX;
  17. raton ratones[MAX];
  18. madriguera hoyos[MAX];
  19.  
  20. void solve(int i) {
  21.     if (i == n) {
  22.         mejorSol = sol;
  23.         return;
  24.     }
  25.     for (int j = 0; j < m; ++j) {
  26.         if ((ratones[i].v <= hoyos[j].c) && (abs(ratones[i].p-hoyos[j].c) < mejorSol)) {
  27.             int viejo = sol;
  28.             hoyos[j].c -= ratones[i].v;
  29.             sol = max(sol, abs(ratones[i].p-hoyos[j].c));
  30.             solve(i+1);
  31.             sol = viejo;
  32.             hoyos[j].c += ratones[i].v;
  33.         }
  34.     }
  35. }
  36.  
  37. bool compareR(raton lhs, raton rhs) { return lhs.p < rhs.p; }
  38. bool compareH(madriguera lhs, madriguera rhs) { return lhs.p < rhs.p; }
  39.  
  40. int main () {
  41.     scanf("%d", &n);
  42.     for (int i = 0; i < n; ++i)
  43.         scanf("%d%d", &ratones[i].p, &ratones[i].v);
  44.  
  45.     scanf("%d", &m);
  46.     for (int i = 0; i < m; i++)
  47.         scanf("%d%d", &hoyos[i].p, &hoyos[i].c);
  48.  
  49.     sort(ratones, ratones + n, compareR);
  50.     sort(hoyos, hoyos + m, compareH);
  51.  
  52.     solve(0);
  53.  
  54.     if(mejorSol == INT_MAX) printf("-1\n");
  55.     else printf("%d\n", mejorSol);
  56. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement