# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
232603 | 2020-05-17T14:05:03 Z | crossing0ver | Languages (IOI10_languages) | C++17 | 0 ms | 0 KB |
#include<bits/stdc++.h> #include "grader.h" #include "lang.h" using namespace std; bool s[56][65536]; int A[56]; vector<int> G; int vis[65536]; const int MOD = 1E9 + 7; set<pair<int,int> > H[56]; set<pair<int,pair<int,int> > F[56]; void excerpt(int E[]) { int ca = 1; for (int i = 0; i <= 55; i++) { for (int j = 0; j < 100; j++) { G.push_back(E[j]); if (s[i][E[j]] && !vis[E[j]]) { if (j == 0) A[i] += 1, vis[E[j]] = 1; else A[i]++, vis[E[j]] = 1; if (j != 99 && H[i].find({E[j],E[j+1]}) != H[i].end()) A[i] += 10; if (j < 98 && F[i].find({E[j],{E[j+1],E[j+2]} }) != F[i].end() ) A[i] += 100; } } for (int g:G) vis[g] = 0; G.clear(); } for (int i = 0; i <= 55; i++) if (A[i] > A[ca]) ca = i; memset (A,0,sizeof A); int d = language(ca); for (int i = 0; i < 100; i++) { s[d][E[i]]|=1; if (i != 99) H[d].insert({E[i],E[i+1]}); if (i < 98) F[d].insert({E[i],{E[i+1],E[i+2]} }); } }