제출 #148370

#제출 시각아이디문제언어결과실행 시간메모리
148370강력한 한방 필살기 (#200)함수컵 박물관 (FXCUP4_museum)C++17
100 / 100
92 ms9196 KiB
#include "museum.h"

#include <string.h>

long long CountSimilarPairs(std::vector<int> B, std::vector<int> T, std::vector<int> G) {
	static int a[100],b[100][100],c[100][100][100];
	int n = B.size();
	long long ans=0;
	for(int i=0;i<n;i++)B[i]--,T[i]--,G[i]--;
	
	memset(a,0,sizeof(a));
	for(int i=0;i<n;i++)a[B[i]]++;
	for(int i=0;i<100;i++)ans+=1LL*a[i]*(a[i]-1)/2;
	
	memset(a,0,sizeof(a));
	for(int i=0;i<n;i++)a[T[i]]++;
	for(int i=0;i<100;i++)ans+=1LL*a[i]*(a[i]-1)/2;
	
	memset(a,0,sizeof(a));
	for(int i=0;i<n;i++)a[G[i]]++;
	for(int i=0;i<100;i++)ans+=1LL*a[i]*(a[i]-1)/2;
	
	memset(b,0,sizeof(b));
	for(int i=0;i<n;i++)b[B[i]][T[i]]++;
	for(int i=0;i<100;i++)for(int j=0;j<100;j++)ans-=1LL*b[i][j]*(b[i][j]-1)/2;
	memset(b,0,sizeof(b));
	for(int i=0;i<n;i++)b[G[i]][T[i]]++;
	for(int i=0;i<100;i++)for(int j=0;j<100;j++)ans-=1LL*b[i][j]*(b[i][j]-1)/2;
	memset(b,0,sizeof(b));
	for(int i=0;i<n;i++)b[B[i]][G[i]]++;
	for(int i=0;i<100;i++)for(int j=0;j<100;j++)ans-=1LL*b[i][j]*(b[i][j]-1)/2;
	
	memset(c,0,sizeof(c));
	for(int i=0;i<n;i++)c[B[i]][T[i]][G[i]]++;
	for(int i=0;i<100;i++)for(int j=0;j<100;j++)for(int k=0;k<100;k++)ans+=1LL*c[i][j][k]*(c[i][j][k]-1)/2;

	return ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...