Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- bool vis_table[1009];
- int request[1009];
- bool cmp(const pair<pair <int, int>, int > &a,const pair<pair < int, int >, int> &b)
- {
- if(a.first.second >= b.first.second)
- return true;
- return false;
- }
- int main()
- {
- int n, ans = 0, c = 0;
- cin >>n;
- vector <pair < pair<int, int>, int > >a(n);
- for(int i = 0;i < n;i++){
- cin >> a[i].first.first >> a[i].first.second;
- a[i].second = i + 1;
- }
- sort(a.begin(), a.end(), cmp);
- int k;
- cin >> k;
- vector <pair <int, int> > table(k);
- for(int i = 0;i < k;i++)
- {
- cin >> table[i].first;
- table[i].second = i + 1;
- }
- sort(table.begin(), table.end());
- for(int i = 0;i < n;i++)
- {
- //int okTable = lower_bound(table.begin(), table.end(), make_pair(a[i].first.first, INT_MIN)) - table.begin();
- int okTable = k, f = 1;
- for(int j = 0; f && j < k;j++)
- if(table[j].first >= a[i].first.first && !vis_table[table[j].second])
- okTable = j, f = 0;
- // while(vis_table[okTable] && okTable < k)
- // okTable++;
- // printf("okTable = %d\n", okTable);
- if(okTable < k)
- {
- c++;
- ans += a[i].first.second;
- vis_table[table[okTable].second] = true;
- request[table[okTable].second] = a[i].second;
- }
- }
- cout << c << " " << ans <<endl;
- for(int i = 1;i <= 1000;i++)
- if(vis_table[i])
- cout << request[i] << " " << i <<endl;
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement