| # | Time | Username | Problem | Language | Result | Execution time | Memory |
|---|---|---|---|---|---|---|---|
| 1327055 | skibidigodv9 | Languages (IOI10_languages) | C++20 | 0 ms | 0 KiB |
#include <bits/stdc++.h>
#include "grader.h"
using namespace std;
unordered_map<long long, int> NW[3][56];
vector<long long> Cst = {1e10, 8e10, 32e10};
//single[char][lang] = weight?
void excerpt(int* E) {
long long n = 100, i, j, k, l = 0;
vector<long long> langScore(56, 0);
k = -1; while (++k < 2) {
//k+1 in a row
i = k-1; while (++i < n) {
long long stv = 0, S = 0;
l = k+1; while (l--) stv += (long long)(E[i-l])<<(l<<4LL);
j = -1; while (++j < 56) {
if (NW[k][j].find(stv) != NW[k][j].end()) {
long long ww = NW[k][j][stv];
S += ww*ww;
}
}
if (S == 0) {
langScore[0]++; //never seen that before
} else {
long long cc = Cst[k]/S;
j = -1; while (++j < 56) {
if (NW[k][j].find(stv) != NW[k][j].end()) {
long long ww = NW[k][j][stv];
langScore[j] += cc*ww*ww;
}
}
}
}
}
long long bestLang = 0;
i = -1; while (++i < 56) {
if (langScore[i] > langScore[bestLang]) bestLang = i;
}
long long L = language(bestLang);
k = -1; while (++k < 3) {
//k+1 in a row
i = k-1; while (++i < n) {
long long stv = 0;
l = k+1; while (l--) stv += (long long)(E[i-l])<<(l<<4LL);
NW[k][L][stv]++;
}
}
return;
}