mickypinata

PROG-T1119: Coalition

Jul 6th, 2021 (edited)
806
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 0.79 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. const int N = 3e5;
  5.  
  6. int qsum[N + 1], arr[N + 1];
  7.  
  8. int main(){
  9.  
  10.     int nTeams;
  11.     scanf("%d", &nTeams);
  12.     for(int i = 1; i <= nTeams; ++i){
  13.         scanf("%d", &arr[i]);
  14.         qsum[i] = arr[i];
  15.     }
  16.     sort(qsum + 1, qsum + nTeams + 1, greater<int>());
  17.     for(int i = 1; i <= nTeams; ++i){
  18.         qsum[i] += qsum[i - 1];
  19.     }
  20.  
  21.     int tr = qsum[nTeams] / 2;
  22.     int bigNumAns = upper_bound(qsum + 1, qsum + nTeams + 1, tr) - qsum;
  23.     for(int i = 1; i <= nTeams; ++i){
  24.         int idx = upper_bound(qsum + 1, qsum + nTeams + 1, tr - arr[i]) - qsum;
  25.         if(qsum[idx] - qsum[idx - 1] <= arr[i]){
  26.             cout << bigNumAns - 1 << '\n';
  27.         } else {
  28.             cout << idx << '\n';
  29.         }
  30.     }
  31.  
  32.     return 0;
  33. }
  34.  
Add Comment
Please, Sign In to add comment