Advertisement
SuitNdtie

Coalition PROG1119

Apr 25th, 2019
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.19 KB | None | 0 0
  1. #include<stdio.h>
  2. #include<algorithm>
  3. using namespace std;
  4.  
  5. int main()
  6. {
  7.     int n;
  8.     scanf("%d",&n);
  9.     pair<int,int> arr[n];
  10.     int qs[n+1];qs[n] = 0;
  11.     int sumall = 0;
  12.     for(int i = 0 ; i < n ; i++){
  13.         scanf("%d",&arr[i].first);
  14.         arr[i].second = i;
  15.         sumall += arr[i].first;
  16.     }
  17.     sort(arr,arr+n);
  18. /*  printf("Array\n Data : ");
  19.     for(int i = 0 ; i < n ; i++){
  20.         printf("%d ",arr[i].first);
  21.     }
  22.     printf("\n Index : ");
  23.     for(int i = 0 ; i < n ; i++){
  24.         printf("%d ",arr[i].second);
  25.     }
  26.     printf("\n\nQuicksum\n Data : ");*/
  27.     for(int i = n - 1 ; i >= 0 ; i--){
  28.         qs[i] = qs[i+1] + arr[i].first;
  29.     }
  30. /*  for(int i = 0 ; i < n ; i++){
  31.         printf("%d ",qs[i]);
  32.     }
  33.     printf("\n");*/
  34.    
  35.     int ans[n];
  36.     for(int i = 0 ; i < n ; i++){ //calculation
  37.         int l = 0 , r = n - 1;
  38.         int mina = n - 1;
  39.         while(l <= r){
  40.             int m = (l+r)/2;
  41.             int sum = arr[i].first + qs[m];
  42.             if(m <= i){
  43.                 sum -= arr[i].first;
  44.             }
  45.             if(sum > sumall/2){
  46.                 int lenght = n - m;
  47.                 if(m <= i){
  48.                     lenght--;
  49.                 }
  50.                 if(lenght < mina)mina = lenght;
  51.                 l = m + 1;
  52.             }
  53.             else{
  54.                 r = m - 1;
  55.             }
  56.         }
  57.         ans[arr[i].second] = mina;
  58.     }
  59.     for(int i = 0 ; i < n ; i++){
  60.         printf("%d\n",ans[i]);
  61.     }
  62.     return 0;
  63. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement