Advertisement
Guest User

Untitled

a guest
Dec 14th, 2019
132
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2.  
  3. //иброгим
  4.  
  5. #define loop(i,n) for(int i = 0; i<n; ++i)
  6. #define all(a) a.begin(),a.end()
  7. #define FOR(i,n,m) for(int i = n; i<m; ++i)
  8. #define rall(a) a.rbegin(),a.rend()
  9. #define fr first
  10. #define sc second
  11. #define mp(a,b) make_pair(a,b)
  12. #define int long long
  13.  
  14. using namespace std;
  15.  
  16. int s1,d1,l1,r1;
  17. int s2,d2,l2,r2;
  18.  
  19. bool comp(pair <int,int> i, pair <int,int> j)
  20. {
  21. if (i.second * j.first == j.second * i.first) return i.first > j.first;
  22. return (i.second * j.first < j.second * i.first);
  23. }
  24.  
  25. signed main() {
  26. ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL);
  27. int n;
  28. cin >> n;
  29. vector <int> norm(n);
  30. loop(i,n) cin >> norm[i];
  31. int m;
  32. cin >> m;
  33. vector <pair <int,int> > pod(m);
  34. loop(i,m) cin >> pod[i].first >> pod[i].second;
  35. sort(all(pod), comp);
  36. sort(rall(norm));
  37. int q;
  38. cin >> q;
  39. vector <int> pref(n+1,0);
  40. loop(i,n) pref[i+1] = pref[i] + norm[i];
  41. vector <int> kekis(m);
  42. loop(i,m) kekis[i] = i;
  43. while(q--)
  44. {
  45. int ans = 0;
  46. int a, sum;
  47. cin >> a;
  48. if (m < 6)
  49. {
  50. loop(i, n+1)
  51. {
  52. int nval = a - i;
  53. sort(all(kekis));
  54. do
  55. {
  56. sum = 0;
  57. int chubzik = 1e4 + pref[i];
  58. loop(j, min(m, nval))
  59. {
  60. sum += pod[kekis[j]].first * chubzik;
  61. chubzik -= pod[kekis[j]].second;
  62. }
  63. ans = max(sum, ans);
  64. } while (next_permutation(all(kekis)));
  65. }
  66. cout << ans << endl;
  67. } else
  68. {
  69. loop(i,n + 1)
  70. {
  71. sum = 0;
  72. int chubzik = 1e4 + pref[i], nval = a - i;
  73. loop(j, min(m,nval))
  74. {
  75. sum += pod[j].first * chubzik;
  76. chubzik -= pod[j].second;
  77. }
  78. ans = max(ans, sum);
  79. }
  80. cout << ans << endl;
  81. }
  82. }
  83. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement