제출 #434064

#제출 시각아이디문제언어결과실행 시간메모리
434064KoDLanguages (IOI10_languages)C++17
65 / 100
5759 ms9092 KiB
#include <bits/stdc++.h>
#include "grader.h"
#include "lang.h"

#define SZ 100
#define LN 56
#define LT 65536

int has[LN][LT];
std::array<std::map<std::pair<int, int>, int>, LN> pair;

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

void excerpt(int *E) {
    std::array<long long, LN> point{};
    for (int t = 0; t < LN; ++t) {
        for (int i = 0; i < SZ; ++i) {
            point[t] += has[t][i];
        }
        for (int i = 0; i < SZ - 1; ++i) {
            const auto itr = pair[t].find(std::make_pair(E[i], E[i + 1]));
            point[t] += 10 * (itr == pair[t].end() ? 0 : itr -> second);
        }
    }
    const int ret = std::max_element(point.begin(), point.end()) - point.begin();
    const int type = language(ret);
    for (int i = 0; i < SZ; ++i) {
        has[type][E[i]] += 1;
    }
    for (int i = 0; i < SZ - 1; ++i) {
        pair[type][{E[i], E[i + 1]}] += 1;
    }
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...