General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
58040359 Practice:
vimal_kesari
1199C - 45 GNU C++11 Time limit exceeded on test 13 1000 ms 12564 KB 2019-07-30 22:23:40 2019-07-30 22:23:40
→ Source
#include <algorithm>
#include <cmath>
#include <iostream>
#include <unordered_map>
#include <map>

#define ll long long

using namespace std;

int main() {
    ll n, I;
    cin >> n >> I;

    map<int, int> counter;
    ll temp;
    for (ll i = 0; i < n; i++) {
        cin >> temp;
        if (counter.find(temp) == counter.end()) {
            counter[temp] = 1;
        } else {
            counter[temp]++;
        }
    }

    ll size = counter.size();
    I = I * 8;
    ll perItemBit = I / n;
    // cout << perItemBit << endl;
    ll maxKeys = pow(2, perItemBit);
    // cout << maxKeys << endl;

    ll keysToRemove = size - maxKeys;

   
    ll index = 0;
    ll left = 0;
    ll right = size - 1;
    ll ans = 0;

    auto iter = counter.begin();

    if (keysToRemove > 0) {
        ll cSum = 0;
        ll maxSum = 0;
        ll tSum = 0;
        for (int i = 0; i < maxKeys; i++) {
            cSum += iter->second;
            tSum += iter->second;
            iter++;
        }
        auto iter1 = counter.begin();
        for (int i = maxKeys; i < size; i++) {
            cSum += iter->second;
            cSum -= iter1->second;
            if (cSum > maxSum) {
                maxSum = cSum;
            }
            tSum += iter->second;
            iter++;
            iter1++;
        }
        cout << tSum - maxSum << endl;
    } else {
        cout << 0 << endl;
    }
}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details