답안 #271011

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
271011 2020-08-18T04:24:28 Z TMJN Languages (IOI10_languages) C++17
88 / 100
4340 ms 31972 KB
#pragma GCC target("avx2")
#pragma GCC optimize("O3")
#pragma GCC optimize("unroll-loops")
#include <bits/stdc++.h>
#include "grader.h"
using namespace std;

int k[56][66666];
map<long long,vector<int>>mpv,mppv;
int C[56];

void excerpt(int *E) {
	pair<double,int>mx={0,0};
	int c[56];
	for(int i=0;i<56;i++){
		c[i]=0;
	}
	for(int i=0;i<100;i++){
		for(int j=0;j<56;j++){
			c[j]+=k[j][E[i]];
		}
	}
	for(int i=0;i<99;i++){
		for(int j:mpv[E[i]*66666ll+E[i+1]]){
			c[j]+=100;
		}
	}
	for(int i=0;i<98;i++){
		for(int j:mppv[E[i]*66666ll*66666+E[i+1]*66666ll+E[i+2]]){
			c[j]+=10000;
		}
	}
	for(int i=0;i<56;i++){
		if(C[i]==0)continue;
		mx=max(mx,{(double)c[i]/C[i],i});
	}
	int l=language(mx.second);
	C[l]++;
	for(int i=0;i<100;i++){
		k[l][E[i]]++;
	}
	for(int i=0;i<99;i++){
		mpv[E[i]*66666+E[i+1]].push_back(l);
	}
	for(int i=0;i<98;i++){
		mppv[E[i]*66666ll*66666+E[i+1]*66666ll+E[i+2]].push_back(l);
	}
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4329 ms 31816 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Partially correct 4340 ms 31972 KB Output is partially correct - 81.07%