Guest User

Untitled

a guest
Apr 13th, 2014
139
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. #include <bits/stdc++.h>
  2.  
  3. #define ll long long
  4. using namespace std;
  5.  
  6. const int INF = 2e9;
  7. const int MXN = 1e5;
  8.  
  9. struct group {
  10.     int col, money, id;
  11. };
  12.  
  13. bool cmp(group x, group y) {
  14.     if (x.money != y.money)
  15.         return x.money > y.money;
  16.  
  17.     return x.col < y.col;
  18. }
  19.  
  20. int sum, n, m;
  21. group a[MXN];
  22.  
  23. pair<int, int> t[MXN];
  24.  
  25. int main()
  26. {
  27.     scanf("%d", &n);
  28.     for (int i = 1; i <= n; i++) {
  29.         scanf("%d%d", &a[i].col, &a[i].money);
  30.         a[i].id = i;
  31.     }
  32.     scanf("%d", &m);
  33.     for (int i = 1; i <= m; i++) {
  34.         scanf("%d", &t[i].first);
  35.         t[i].second = i;
  36.     }
  37.     sort(t + 1, t + m + 1);
  38.     sort(a + 1, a + n + 1, cmp);
  39.  
  40.     vector< pair<int, int> > ans;
  41.     for (int i = 1; i <= n; i++) {
  42.         for (int j = 1; j <= m; j++) {
  43.             if (t[j].first >= a[i].col) {
  44.                 t[j].first = 0;
  45.                 sum += a[i].money;
  46.                 ans.push_back(make_pair(a[i].id, t[j].second));
  47.                 break;
  48.             }
  49.         }
  50.     }
  51.     printf("%d %d\n", ans.size(), sum);
  52.     for (int i = 0; i < ans.size(); i++) {
  53.         printf("%d %d\n", ans[i].first, ans[i].second);
  54.     }
  55.     return 0;
  56. }
RAW Paste Data