fork download
  1. #include <bits/stdc++.h>
  2.  
  3. using namespace std;
  4. typedef long long ll;
  5. const int N=1e4;
  6.  
  7. bool vis[N];
  8. pair<int,pair <int,int> > P[N];
  9. vector <int> s;
  10. pair <int,int> ans[N],siz[N];
  11.  
  12. int main()
  13. {
  14. int n,k,sum=0,C=0;
  15. scanf("%d",&n);
  16.  
  17. for(int i=0; i<n; i++)
  18. {
  19. int c,p;
  20. scanf("%d%d",&c,&p);
  21.  
  22. P[i]=make_pair(p, make_pair(c,i+1) );
  23.  
  24. }
  25.  
  26. sort(P,P+n);
  27.  
  28.  
  29.  
  30. scanf("%d",&k);
  31. for(int i=0; i<k; i++)
  32. {
  33. int x;
  34. scanf("%d",&x);
  35. s.push_back(x);
  36. }
  37.  
  38. sort(s.begin(),s.end());
  39. int j=0;
  40.  
  41. for(int i=n-1; i>=0; i--)
  42. {//cout<<P[i].second.first<<endl;
  43. int m = P[i].second.first;
  44. // cout<<m<<endl;
  45.  
  46. int x=lower_bound(s.begin(),s.end(),m) - s.begin();
  47. // cout<<"X"<<x<<endl;
  48.  
  49. if(x==s.size())continue;
  50.  
  51. sum+=P[i].first;
  52. C++;
  53.  
  54. ans[j]={P[i].second.second,x+1};
  55. s.erase(s.begin()+x,s.begin()+x+1);
  56. j++;
  57.  
  58.  
  59. }
  60.  
  61. cout<<C<<" "<<sum<<endl;
  62.  
  63. for(int i=0;i<C;i++)
  64. {
  65. cout<<ans[i].first<<" "<<ans[i].second<<endl;
  66. }
  67.  
  68.  
  69. return 0;
  70. }
  71.  
Success #stdin #stdout 0s 4556KB
stdin
Standard input is empty
stdout
0 0