Submission #1327055

#TimeUsernameProblemLanguageResultExecution timeMemory
1327055skibidigodv9Languages (IOI10_languages)C++20
Compilation error
0 ms0 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;
}

Compilation message (stderr)

lang.cpp:6:43: error: narrowing conversion of '1.0e+10' from 'double' to 'long long int' [-Wnarrowing]
    6 | vector<long long> Cst = {1e10, 8e10, 32e10};
      |                                           ^