比赛 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;
}