Submission #434039

#TimeUsernameProblemLanguageResultExecution timeMemory
434039KoDLanguages (IOI10_languages)C++17
56 / 100
306 ms6856 KiB
#include <bits/stdc++.h>
#include "grader.h"
#include "lang.h"

#define SZ 100

bool has[56][65536];

template <class T> using Vec = std::vector<T>;

void excerpt(int *E) {
    std::map<int, int> map;
    for (int i = 0; i < SZ; ++i) {
        map[E[i]] += 1;
    }
    Vec<std::pair<int, int>> vec;
    for (const auto [x, y] : map) {
        vec.emplace_back(y, x);
    }
    std::sort(vec.rbegin(), vec.rend());
    Vec<int> cand(56);
    std::iota(cand.begin(), cand.end(), 0);
    int ret = 0;
    for (const auto [y, x] : vec) {
        Vec<int> next;
        for (const auto t : cand) {
            if (has[t][x]) {
                next.push_back(t);
            }
        }
        if (next.empty()) {
            break;
        }
        cand = std::move(next);
    }
    int max = -1;
    for (const auto t : cand) {
        int cnt = 0;
        for (const auto [x, y] : map) {
            if (has[t][x]) {
                cnt += 1;
            }
        }
        if (max < cnt) {
            max = cnt;
            ret = t;
        }
    }
    const int type = language(ret);
    for (const auto [x, y] : map) {
        has[type][x] = true;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...