This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
#include "grader.h"
//#include "lang.h"
using namespace std;
const int N = 60;
const int m = 100;
map<int, int> s[N];
int ss[N];
double t[N];
void excerpt(int *E)
{
    //sort(E, E + m);
    map<int, int> ys;
    for (int i = 0; i < m; ++i)
        ys[E[i]]++;
    double minu = 1000000000;
    int mini = 0;
    for (int i = 0; i < 56; ++i)
    {
        double q = 0;
        //for (auto it = s[i].begin(); it != s[i].end(); ++it)
        //    g.insert(it->first);
        q += t[i];
        for (auto it = ys.begin(); it != ys.end(); ++it)
        {
            int x = it->first;
            double u1 = 0;
            if (ys.find(x) != ys.end())
                u1 = ys[x] / (double)m;
            double u2 = 0;
            if (s[i].find(x) != s[i].end())
                u2 = s[i][x] / (double)ss[i];
            q += abs(u1 - u2);
            q -= u2;
            if (s[i].find(x) == s[i].end())
                q += 5;
        }
        if (q < minu)
        {
            minu = q;
            mini = i;
        }
    }
    int u = language(mini);
    ss[u] += m;
    for (int j = 0; j < m; ++j)
    {
        s[u][E[j]]++;
    }
    t[u] = 0;
    for (auto it = s[u].begin(); it != s[u].end(); ++it)
    {
        t[u] += (it->second / (double)ss[u]);
    }
}
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... | 
| # | Verdict  | Execution time | Memory | Grader output | 
|---|
| Fetching results... |