Submission #1824945


Source Code Expand

#include <iostream>
#include <cstdio>
#include <cstring>
#include <cassert>
#include <cctype>
#include <map>
#include <algorithm>
using namespace std;
typedef long long lint;
#define cout cerr
#define ni (next_num<int>())
template<class T>inline T next_num(){
	T i=0;char c;
	while(!isdigit(c=getchar())&&c!='-');
	bool flag=c=='-';
	flag?c=getchar():0;
	while(i=i*10-'0'+c,isdigit(c=getchar()));
	return flag?-i:i;
}
template<class T1,class T2>inline void apmax(T1 &a,const T2 &b){if(a<b)a=b;}
template<class T1,class T2>inline void apmin(T1 &a,const T2 &b){if(b<a)a=b;}
const int N=410;
struct Tile{
	const static int D=4;
	int a[D];
	inline Tile nxt(){
		return (Tile){a[1],a[2],a[3],a[0]};
	}
	inline friend bool operator < (const Tile &a,const Tile &b){
		for(int i=0;i<4;i++){
			if(a.a[i]!=b.a[i])return a.a[i]<b.a[i];
		}
		return false;
	}
	inline friend ostream & operator <<(ostream & out,const Tile &b){
		out<<b.a[0]<<" "<<b.a[1]<<" "<<b.a[2]<<" "<<b.a[3]<<" ";
		return out;
	}
}tile[N];
map<Tile,int>m;
inline void add(Tile x,int v){
	for(int i=0;i<Tile::D;i++,x=x.nxt()){
		m[x]+=v;
	}
}
int main(){
	int n=ni;
	for(int i=1;i<=n;i++){
		tile[i]=(Tile){ni,ni,ni,ni};
		add(tile[i],1);
	}
	lint ans=0;
	for(int i=1;i<=n;i++){
		add(tile[i],-1);
		int *a=tile[i].a;
		for(int j=i+1;j<=n;j++){
			int *b=tile[j].a;
			add(tile[j],-1);
			for(int d=0;d<4;d++){
				tile[j]=tile[j].nxt();
				Tile f1=(Tile){a[1],a[0],b[0],b[3]};
				Tile f2=(Tile){a[2],a[1],b[3],b[2]};
				Tile f3=(Tile){a[3],a[2],b[2],b[1]};
				Tile f4=(Tile){a[0],a[3],b[1],b[0]};
				lint tmp=1;
				tmp*=m[f1],add(f1,-1);
				tmp*=m[f2],add(f2,-1);
				tmp*=m[f3],add(f3,-1);
				tmp*=m[f4];
				add(f1,1),add(f2,1),add(f3,1);
				ans+=tmp;
			}
			add(tile[j],1);
		}
	}
	printf("%lld\n",ans);
	return 0;
}

Submission Info

Submission Time
Task E - Building Cubes with AtCoDeer
User sshockwave
Language C++14 (GCC 5.4.1)
Score 0
Code Size 1868 Byte
Status TLE
Exec Time 4217 ms
Memory 259712 KB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 900
Status
AC × 3
AC × 15
TLE × 1
MLE × 4
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 79 ms 256 KB
1_004.txt AC 7 ms 256 KB
1_005.txt AC 187 ms 256 KB
1_006.txt AC 130 ms 256 KB
1_007.txt AC 302 ms 256 KB
1_008.txt AC 272 ms 256 KB
1_009.txt AC 621 ms 256 KB
1_010.txt AC 96 ms 256 KB
1_011.txt AC 1176 ms 896 KB
1_012.txt AC 8 ms 640 KB
1_013.txt TLE 4217 ms 226432 KB
1_014.txt AC 21 ms 2816 KB
1_015.txt MLE 3648 ms 259584 KB
1_016.txt AC 791 ms 71680 KB
1_017.txt MLE 3616 ms 259712 KB
1_018.txt MLE 3782 ms 259328 KB
1_019.txt MLE 3932 ms 256768 KB