Advertisement
fooker

prob C

May 30th, 2024
736
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.76 KB | None | 0 0
  1.  
  2. void solve() {
  3.     ll n, m;
  4.     std::cin >> n >> m;
  5.  
  6.     std::vector<std::pair<ll, ll>> pc, tc;
  7.     ll p[n + m + 2], t[n + m + 2];
  8.     for (ll i = 1; i <= n + m + 1; i++) {
  9.         std::cin >> p[i];
  10.     }
  11.  
  12.     for (ll i = 1; i <= n + m + 1; i++) {
  13.         std::cin >> t[i];
  14.     }  
  15.  
  16.     for (ll i = 1; i <= n + m + 1; i++) {
  17.         if (p[i] > t[i]) {
  18.             pc.push_back({p[i], i});
  19.         } else {
  20.             tc.push_back({t[i], i});
  21.         }
  22.     }
  23.  
  24.     std::vector<ll> ans(n + m + 2);
  25.     ll fin = 0;
  26.  
  27.     if (pc.size() > n) {
  28.         for (ll i = 0; i < n; i++) fin += pc[i].first;
  29.         for (ll i = n; i < pc.size(); i++) fin += t[pc[i].second];
  30.         for (ll i = 0; i < tc.size(); i++) fin += tc[i].first;
  31.  
  32.         for (ll i = 0; i < n; i++) {
  33.             ans[pc[i].second] = fin - pc[i].first + pc[n].first - t[pc[n].second];
  34.         }
  35.  
  36.         for (ll i = n; i < pc.size(); i++) {
  37.             ans[pc[i].second] = fin - t[pc[i].second];
  38.         }
  39.  
  40.         for (ll i = 0; i < tc.size(); i++) {
  41.             ans[tc[i].second] = fin - tc[i].first;
  42.         }
  43.     } else {
  44.         for (ll i = 0; i < m; i++) fin += tc[i].first;
  45.         for (ll i = m; i < tc.size(); i++) fin += p[tc[i].second];
  46.         for (ll i = 0; i < pc.size(); i++) fin += pc[i].first;
  47.  
  48.         for (ll i = 0; i < m; i++) {
  49.             ans[tc[i].second] = fin - tc[i].first + tc[m].first - p[tc[m].second];
  50.         }
  51.  
  52.         for (ll i = m; i < tc.size(); i++) {
  53.             ans[tc[i].second] = fin - p[tc[i].second];
  54.         }
  55.  
  56.         for (ll i = 0; i < pc.size(); i++) {
  57.             ans[pc[i].second] = fin - pc[i].first;
  58.         }
  59.     }
  60.     for (ll i = 1; i <= n + m + 1; i++) {
  61.         std::cout << ans[i] << " \n"[i == n + m + 1];
  62.     }
  63. }
  64.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement