제출 #394692

#제출 시각아이디문제언어결과실행 시간메모리
394692MarcoMeijerLanguages (IOI10_languages)C++14
98 / 100
5402 ms254148 KiB
#include "grader.h" #include "lang.h" #include <bits/stdc++.h> using namespace std; // macros typedef long long ll; typedef long double ld; typedef pair<int, int> ii; typedef pair<ll, ll> lll; typedef tuple<int, int, int> iii; typedef vector<int> vi; typedef vector<ii> vii; typedef vector<iii> viii; typedef vector<ll> vll; typedef vector<lll> vlll; #define REP(a,b,c) for(int a=int(b); a<int(c); a++) #define RE(a,c) REP(a,0,c) #define RE1(a,c) REP(a,1,c+1) #define REI(a,b,c) REP(a,b,c+1) #define REV(a,b,c) for(int a=int(c-1); a>=int(b); a--) #define FOR(a,b) for(auto& a : b) #define all(a) a.begin(), a.end() #define INF 1e9 #define EPS 1e-9 #define pb push_back #define popb pop_back #define fi first #define se second #define sz size() mt19937_64 rng(chrono::steady_clock::now().time_since_epoch().count()); const int MX = 761; double mp[56][MX][MX]; double cnt[56]; set<int> possible; int h(int x) { return x%MX; } void excerpt(int *E) { static bool first = true; if(first) { RE(i,56) RE(j,MX) RE(k,MX) mp[i][j][k] = 0.0; RE(i,56) cnt[i] = 0.0; first = false; } int asking = 0; double best = 0.0; FOR(j,possible) { double cur = 0.0; RE(i,99) { double val = mp[j][h(E[i])][h(E[i+1])] / cnt[j]; cur += pow(val,0.25); } if(cur > best) best = cur, asking = j; } int res = language(asking); possible.insert(res); RE(i,99) mp[res][h(E[i])][h(E[i+1])] += 1.0; cnt[res] += 1.0; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...