이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
int main(){
int n;
cin >> n;
int a[4][676];
int b[4][676];
int c[456976];
long long fin = 0;
for(int i = 0; i < 676; i++){
for(int j = 0; j < 4; j++)a[j][i]=0;
for(int j = 0; j < 4; j++)b[j][i]=0;
}
for(int i = 0; i < 456976; i++){
c[i]=0;
}
for(int i = 0; i < n; i++){
char t1, t2, t3, t4;
cin >> t1 >> t2 >> t3 >> t4;
t1-='A';
t2-='A';
t3-='A';
t4-='A';
long long r1=0, r4=0, r2c=0, r2o=0;
if(t1==t4&&t2==t3){
r4+=c[26*(26*(26*(t3)+t4)+t1)+t2];
}
if(t1==t4){
r2c+=b[1][26*(t2)+t1]-r4;
r2c+=b[0][26*(t3)+t1]-r4;
}
if(t2==t3){
r2c+=b[3][26*(t4)+t2]-r4;
r2c+=b[2][26*(t1)+t2]-r4;
}
r2o+=c[26*(26*(26*(t2)+t1)+t4)+t3]-r4;
r2o+=c[26*(26*(26*(t3)+t4)+t1)+t2]-r4;
r1=a[0][26*(t3)+t4]+a[1][26*(t1)+t2]+a[2][26*(t2)+t4]+a[3][26*(t1)+t3]-r4*4-r2c*2-r2o*2;
fin+=r1+r2o+r2c+r4;
//cout << b[1][26*(t2)+t1] << ' ' << b[0][26*(t3)+t1] << ' ' << b[3][26*(t4)+t2] << ' ' << b[2][26*(t1)+t2] << '\n';
//cout << a[0][26*(t3)+t4] << ' '<< a[1][26*(t1)+t2] << ' ' << a[2][26*(t2)+t4] << ' ' << a[3][26*(t1)+t3] <<'\n';
//cout << i << ' ' << fin << ' ' << r1 << ' ' << r2o << ' ' << r2c << ' ' << r4 << '\n';
if(t1==t4){
b[0][26*(t1)+t2]++;
b[1][26*(t1)+t3]++;
}
if(t2==t3){
b[2][26*(t2)+t1]++;
b[3][26*(t2)+t4]++;
}
c[26*(26*(26*(t1)+t2)+t3)+t4]++;
a[0][26*(t1)+t2]++;
a[1][26*(t3)+t4]++;
a[2][26*(t1)+t3]++;
a[3][26*(t2)+t4]++;
}
cout << fin;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |