# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
204914 | 2020-02-27T12:53:56 Z | MetB | Languages (IOI10_languages) | C++14 | 0 ms | 0 KB |
#include <bits/stdc++.h> #include "grader.h" #include "lang.h" using namespace std; int a[5][56][200000], b[5][200000]; int cnt[5][200000]; const int MOD = 199999; void excerpt (int* E) { int n = 100; memset (cnt, 0, sizeof (cnt)); std::set <int> s[5]; for (int i = 0; i < 100; i++) { int val = 1; for (int j = 0; j < min (L, n - i); j++) { val = val * E[i+j] % MOD; cnt[j][val]++; s[j].insert (val); } } double mx = 0; int x = 0; for (int i = 0; i < 56; i++) { double points = 0; for (int k = 0; k < 4; k++) { for (int j : s[k]) { if (b[k][j]) points += cnt[k][j] * ((double) a[k][i][j] / b[k][j]) * (k + 1); } } if (mx < points) { mx = points; x = i; } } x = language (x); for (int i = 0; i < 100; i++) { for (int j = 0; j < min (4, n - i); j++) { int val = 1; for (int k = 0; k <= j; k++) val = val * E[i+k] % MOD; a[j][x][val]++; b[j][val]++; } } }