SHARE
TWEET

Untitled

a guest Dec 14th, 2019 87 Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  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. }
RAW Paste Data
We use cookies for various purposes including analytics. By continuing to use Pastebin, you agree to our use of cookies as described in the Cookies Policy. OK, I Understand
 
Top