Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <bits/stdc++.h>
- using namespace std;
- long long int check(map<long long int,long long int> &hm,long long int n,long long int mid){
- long long int workers = 0;
- long long int tasks = 0;
- for(int i=1;i<=n;i++){
- if(hm[i]>mid){
- tasks+=(hm[i]-mid);
- }
- else{
- workers+=((mid-hm[i])/2);
- }
- }
- return workers>=tasks;
- }
- int solve(long long int n,long long int m, vector<long long int> &a){
- map<long long int,long long int > hm;
- for(int i=1;i<=n;i++){
- hm[i] = 0;
- }
- for(int i=0;i<m;i++){
- hm[a[i]]++;
- }
- long long int start =0;
- long long int end = 1e12;
- long long int ans = 0;
- while(start<=end){
- long long int mid = (start+end)/2;
- if(check(hm,n,mid)){
- ans = mid;
- end = mid-1;
- }
- else{
- start = mid+1;
- }
- }
- return ans;
- }
- signed main() {
- long long int N;
- long long int M;
- cin>>N>>M;
- vector<long long int> S(M);
- for(int i=0;i<M;i++){
- cin>>S[i];
- }
- cout<<solve(N,M,S)<<endl;
- }
Advertisement
Add Comment
Please, Sign In to add comment