Submission #1351157

#TimeUsernameProblemLanguageResultExecution timeMemory
1351157trideser3개의 봉우리 (IOI25_triples)C++20
18 / 100
2095 ms15676 KiB
#include "triples.h"
#include <bits/stdc++.h>
using namespace std;

bool check_triple(int a, int b, int c, int N, vector<int>& H) {
	if(a < 0 || a >= N || b < 0 || b >= N || c < 0 || c >= N) return false;
	vector<int> distances = {abs(a - b), abs(b - c), abs(c - a)};
	sort(distances.begin(), distances.end());
	vector<int> heights = {H[a], H[b], H[c]};
	sort(heights.begin(), heights.end());
	return distances == heights;
}
void get_triples(int a, int b, int N, vector<int> H, vector<vector<int>>& triples) {
	if(a < 0 || a >= N || b < 0 || b >= N) return;
	if(check_triple(a, b, a + H[a], N, H)) triples.push_back({a, b, a + H[a]});
	if(check_triple(a, b, b + H[a], N, H)) triples.push_back({a, b, b + H[a]});
	if(check_triple(a, b, a + H[b], N, H)) triples.push_back({a, b, a + H[b]});
	if(check_triple(a, b, b + H[b], N, H)) triples.push_back({a, b, b + H[b]});
	if(check_triple(a, b, a - H[a], N, H)) triples.push_back({a, b, a - H[a]});
	if(check_triple(a, b, b - H[a], N, H)) triples.push_back({a, b, b - H[a]});
	if(check_triple(a, b, a - H[b], N, H)) triples.push_back({a, b, a - H[b]});
	if(check_triple(a, b, b - H[b], N, H)) triples.push_back({a, b, b - H[b]});
}

long long count_triples(vector<int> H) {
	vector<vector<int>> triples;
	int N = H.size();
	for(int i = 0; i < N; i++) {
		for(int j = 0; j < N; j++) {
			get_triples(i, j, N, H, triples);
		}
	}
	for(int i = 0; i < triples.size(); i++) {
		sort(triples[i].begin(), triples[i].end());
	}
	sort(triples.begin(), triples.end());
	long long ret = 0;
	if(triples.size() != 0) ret = 1;
	for(int i = 1; i < triples.size(); i++) if(triples[i] != triples[i - 1]) ret++;
	return ret;
}

vector<int> construct_range(int M, int K) {
	return {1, 1, 1};
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...