Submission #3227148
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;++i){
for(int j=0;j<4;++j)--cnt[mp[i][j]];
for(int j=i+1;j<=n;++j){
if(i==j)continue;
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/3;
return 0;
}
Submission Info
Judge Result
Set Name |
Sample |
All |
Score / Max Score |
0 / 0 |
900 / 900 |
Status |
|
|
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 |
AC |
1 ms |
256 KB |
0_002.txt |
AC |
1 ms |
256 KB |
1_003.txt |
AC |
51 ms |
256 KB |
1_004.txt |
AC |
5 ms |
256 KB |
1_005.txt |
AC |
97 ms |
256 KB |
1_006.txt |
AC |
69 ms |
256 KB |
1_007.txt |
AC |
253 ms |
256 KB |
1_008.txt |
AC |
226 ms |
256 KB |
1_009.txt |
AC |
373 ms |
256 KB |
1_010.txt |
AC |
23 ms |
256 KB |
1_011.txt |
AC |
96 ms |
896 KB |
1_012.txt |
AC |
2 ms |
384 KB |
1_013.txt |
AC |
202 ms |
19200 KB |
1_014.txt |
AC |
2 ms |
512 KB |
1_015.txt |
AC |
182 ms |
20352 KB |
1_016.txt |
AC |
40 ms |
5760 KB |
1_017.txt |
AC |
178 ms |
20352 KB |
1_018.txt |
AC |
186 ms |
20352 KB |
1_019.txt |
AC |
201 ms |
20224 KB |