Submission #3227140


Source Code Expand

#include<bits/stdc++.h>
#define ll long long
#define N 405
using namespace std;
inline int read(){
	int ans=0;
	char ch=getchar();
	while(!isdigit(ch))ch=getchar();
	while(isdigit(ch))ans=(ans<<3)+(ans<<1)+(ch^48),ch=getchar();
	return ans;
}
int n,col[N][4];
ll ans=0,mp[N][4];
map<ll,int>cnt;
inline ll idx(int a,int b,int c,int d){return 1ll*a+1ll*b*1000+1ll*c*1000000+1ll*d*1000000000;}
int main(){
	n=read();
	for(int i=1;i<=n;++i)for(int j=0;j<=3;++j)col[i][j]=read();
	for(int i=1;i<=n;++i){
		mp[i][0]=idx(col[i][0],col[i][1],col[i][2],col[i][3]);
		mp[i][1]=idx(col[i][1],col[i][2],col[i][3],col[i][0]);
		mp[i][2]=idx(col[i][2],col[i][3],col[i][0],col[i][1]);
		mp[i][3]=idx(col[i][3],col[i][0],col[i][1],col[i][2]);
		for(int j=0;j<4;++j)++cnt[mp[i][j]];
	}
	for(int i=1;i<n-4;++i){
		for(int j=0;j<4;++j)--cnt[mp[i][j]];
		for(int j=i+1;j<=n;++j){
			for(int k=0;k<4;++k)--cnt[mp[j][k]];
			for(int k=0;k<4;++k){
				ll tmp[16],ttmp=1;
				tmp[0]=idx(col[i][0],col[i][3],col[j][k],col[j][(k+3)%4]);
				tmp[4]=idx(col[j][(k+3)%4],col[i][0],col[i][3],col[j][k]);
				tmp[8]=idx(col[j][k],col[j][(k+3)%4],col[i][0],col[i][3]);
				tmp[12]=idx(col[i][3],col[j][k],col[j][(k+3)%4],col[i][0]);
				tmp[1]=idx(col[i][1],col[i][0],col[j][(k+3)%4],col[j][(k+2)%4]);
				tmp[5]=idx(col[j][(k+2)%4],col[i][1],col[i][0],col[j][(k+3)%4]);
				tmp[9]=idx(col[j][(k+3)%4],col[j][(k+2)%4],col[i][1],col[i][0]);
				tmp[13]=idx(col[i][0],col[j][(k+3)%4],col[j][(k+2)%4],col[i][1]);
				tmp[2]=idx(col[i][2],col[i][1],col[j][(k+2)%4],col[j][(k+1)%4]);
				tmp[6]=idx(col[j][(k+1)%4],col[i][2],col[i][1],col[j][(k+2)%4]);
				tmp[10]=idx(col[j][(k+2)%4],col[j][(k+1)%4],col[i][2],col[i][1]);
				tmp[14]=idx(col[i][1],col[j][(k+2)%4],col[j][(k+1)%4],col[i][2]);
				tmp[3]=idx(col[i][3],col[i][2],col[j][(k+1)%4],col[j][k]);
				tmp[7]=idx(col[j][k],col[i][3],col[i][2],col[j][(k+1)%4]);
				tmp[11]=idx(col[j][(k+1)%4],col[j][k],col[i][3],col[i][2]);
				tmp[15]=idx(col[i][2],col[j][(k+1)%4],col[j][k],col[i][3]);
				if(cnt[tmp[0]]==0||cnt[tmp[1]]==0||cnt[tmp[2]]==0||cnt[tmp[3]]==0)continue;
				for(int l=0;l<4;++l){
					ttmp*=cnt[tmp[l]];
					for(int m=l;m<16;m+=4)--cnt[tmp[m]];
				}
				for(int l=0;l<16;++l)++cnt[tmp[l]];
				ans+=ttmp;
			}
			for(int k=0;k<4;++k)++cnt[mp[j][k]];
		}
		for(int j=0;j<4;++j)++cnt[mp[i][j]];
	}
	cout<<ans;
	return 0;
}

Submission Info

Submission Time
Task E - Building Cubes with AtCoDeer
User idxcalcal
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2419 Byte
Status WA
Exec Time 362 ms
Memory 20352 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 900
Status
AC × 2
WA × 1
AC × 7
WA × 13
Set Name Test Cases
Sample 0_000.txt, 0_001.txt, 0_002.txt
All 0_000.txt, 0_001.txt, 0_002.txt, 1_003.txt, 1_004.txt, 1_005.txt, 1_006.txt, 1_007.txt, 1_008.txt, 1_009.txt, 1_010.txt, 1_011.txt, 1_012.txt, 1_013.txt, 1_014.txt, 1_015.txt, 1_016.txt, 1_017.txt, 1_018.txt, 1_019.txt
Case Name Status Exec Time Memory
0_000.txt AC 1 ms 256 KB
0_001.txt WA 1 ms 256 KB
0_002.txt AC 1 ms 256 KB
1_003.txt WA 51 ms 256 KB
1_004.txt WA 5 ms 256 KB
1_005.txt WA 87 ms 256 KB
1_006.txt WA 62 ms 256 KB
1_007.txt WA 240 ms 256 KB
1_008.txt WA 214 ms 256 KB
1_009.txt WA 362 ms 256 KB
1_010.txt WA 23 ms 256 KB
1_011.txt WA 97 ms 896 KB
1_012.txt AC 1 ms 384 KB
1_013.txt AC 191 ms 19200 KB
1_014.txt AC 2 ms 512 KB
1_015.txt AC 181 ms 20352 KB
1_016.txt AC 39 ms 5760 KB
1_017.txt WA 178 ms 20352 KB
1_018.txt WA 183 ms 20224 KB
1_019.txt WA 200 ms 20224 KB