248362026-02-15 23:04:13pirosmacska10Kövek (100 pont)cpp17Hibás válasz 10/10017ms1852 KiB
#include <iostream>
#include <vector>
#include <algorithm>
#include <climits>
#include <string>
#include <cmath>
#include <queue>
#include <map>

using namespace std;
using ll=long long;

const ll INF=LLONG_MAX;
int main(){
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int n;
    cin >> n;
    ll summ = 0;
    vector<ll> nums(n);
    for(int i = 0; i < n; i++) {
        cin >> nums[i];
        summ += nums[i];
    }
    ll avg = summ / n;
    vector<ll> miss(n);
    for(int i = 0; i < n; i++) {
        miss[i] = nums[i] - avg;
    }
    sort(miss.begin(), miss.end());
    ll ans = 0;
    map<int, int> m;
    for(int i = 0; i < n; i++) {
        if(m[-miss[i]] > 0) {
            m[-miss[i]]--;
            ans++;
        }
        else {
            m[miss[i]]++;
        }
    }
    vector<ll> new_miss;
    for(map<int, int>::iterator it = m.begin(); it != m.end(); it++) {
        if(it->second) new_miss.push_back(it->first);
    }
    miss.swap(new_miss);
    int r = miss.size()-1;
    int l = 0;
    ll run = 0;
    while(l < r) {
        if(-miss[l] - run == miss[r]) {
            l++;
            r--;
            ans++;
            run = 0;
        }
        else if(-miss[l] - run < miss[r]) {
            run += miss[l++];
            ans++;
        }
        else if(-miss[l] - run > miss[r]) {
            run += miss[r--];
            ans++;
        }
    }
    cout << ans;
}
RészfeladatÖsszpontTesztVerdiktIdőMemória
base10/100
1Elfogadva0/01ms508 KiB
2Hibás válasz0/016ms1844 KiB
3Hibás válasz0/51ms316 KiB
4Hibás válasz0/51ms316 KiB
5Hibás válasz0/51ms316 KiB
6Hibás válasz0/51ms316 KiB
7Elfogadva5/51ms316 KiB
8Elfogadva5/51ms348 KiB
9Hibás válasz0/71ms316 KiB
10Hibás válasz0/71ms500 KiB
11Hibás válasz0/81ms316 KiB
12Hibás válasz0/81ms316 KiB
13Hibás válasz0/81ms316 KiB
14Hibás válasz0/82ms564 KiB
15Hibás válasz0/87ms820 KiB
16Hibás válasz0/814ms1588 KiB
17Hibás válasz0/817ms1852 KiB