# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
232601 | crossing0ver | Languages (IOI10_languages) | C++17 | 0 ms | 0 KiB |
이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#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[j].find({E[j],{E[j+1],E[j+2]} }) != F[j].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]} });
}
}