比赛 |
2025暑期集训第6场 |
评测结果 |
ATTTTTTTTTTTTTT |
题目名称 |
Equilateral Triangles |
最终得分 |
7 |
用户昵称 |
对立猫猫对立 |
运行时间 |
41.970 s |
代码语言 |
C++ |
内存使用 |
3.80 MiB |
提交时间 |
2025-07-12 09:28:30 |
显示代码纯文本
#include <bits/stdc++.h>
using namespace std;
int n;
vector<pair<int, int> > g;
unsigned int ans = 0;
map<pair<int, pair<int, int> >, int> mp;
bool calc(int a, int b, int c) {
int dis1 = abs(g[a].first - g[b].first) + abs(g[a].second - g[b].second);
int dis2 = abs(g[a].first - g[c].first) + abs(g[a].second - g[c].second);
int dis3 = abs(g[c].first - g[b].first) + abs(g[c].second - g[b].second);
if(dis1 != dis2 || dis1 != dis3 || dis2 != dis3) return false;
return true;
}
int main() {
freopen("usaco_Feb_Triangles!.in","r",stdin);
freopen("usaco_Feb_Triangles!.out","w",stdout);
cin >> n;
for(int i = 1; i <= n; i++) {
for(int j = 1; j <= n; j++) {
char ch;
cin >> ch;
if(ch == '*') g.push_back(make_pair(i, j));
}
}
for(int i = 0; i < g.size(); i++) {
for(int j = 0; j < g.size(); j++) {
for(int k = 0; k < g.size(); k++) {
if(i == j || i == k || j == k) continue;
if(calc(i, j, k)) ans++;
}
}
}
cout << ans / 6 << endl;
return 0;
}