Samkit5025

Untitled

Aug 30th, 2022
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. #include <bits/stdc++.h>
  2. using namespace std;
  3.  
  4. long long int check(map<long long int,long long int> &hm,long long int n,long long int mid){
  5.  
  6.     long long int workers = 0;
  7.     long long int tasks = 0;
  8.  
  9.     for(int i=1;i<=n;i++){
  10.         if(hm[i]>mid){
  11.             tasks+=(hm[i]-mid);
  12.         }
  13.         else{
  14.             workers+=((mid-hm[i])/2);
  15.         }
  16.     }
  17.     return workers>=tasks;
  18. }
  19.  
  20. int solve(long long int n,long long int m, vector<long long int> &a){
  21.    
  22.     map<long long int,long long int > hm;
  23.  
  24.     for(int i=1;i<=n;i++){
  25.         hm[i] = 0;
  26.     }
  27.  
  28.     for(int i=0;i<m;i++){
  29.         hm[a[i]]++;
  30.     }
  31.  
  32.  
  33.     long long int start =0;
  34.     long long int end = 1e12;
  35.     long long int ans = 0;
  36.  
  37.     while(start<=end){
  38.         long long int mid = (start+end)/2;
  39.  
  40.         if(check(hm,n,mid)){
  41.             ans = mid;
  42.             end = mid-1;
  43.         }
  44.         else{
  45.             start = mid+1;
  46.         }
  47.     }
  48.     return ans;
  49. }
  50.  
  51. signed main() {
  52.     long long int N;
  53.     long long int M;
  54.     cin>>N>>M;
  55.  
  56.     vector<long long int> S(M);
  57.     for(int i=0;i<M;i++){
  58.         cin>>S[i];
  59.     }
  60.     cout<<solve(N,M,S)<<endl;
  61. }
Advertisement
Add Comment
Please, Sign In to add comment