제출 #1260304

#제출 시각아이디문제언어결과실행 시간메모리
1260304am_aadvik3개의 봉우리 (IOI25_triples)C++20
0 / 100
2096 ms1968 KiB
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

bool check(int i, int j, int k, vector<int>& a) {
	if (!((i < j) && (j < k))) return 0;
	vector<int> x = { j - i, k - i, k - j };
	vector<int> y = { a[i], a[j], a[k] };
	sort(x.begin(), x.end());
	sort(y.begin(), y.end());
	for (int i = 0; i < 3; ++i)
		if (x[i] != y[i]) return 0;
	return 1;
}
bool find(int i, int k, vector<int>&a) {
	vector<int> op = { i + a[i],
		k + a[i], i + a[k], k + a[k] };
	for (auto j : op)
		if (check(i, j, k, a))
			return 1;
	return 0;
}
int count_triples(vector<int> a) {
	int mx = a[0], ok = 1;
	for (int i = 1; i < a.size(); ++i)
		mx = max(mx, a[i]),
		ok &= (a[i] > a[i - 1]);

	int ans = 0, n = min((int)a.size(), mx + 1);
	for (int k = 0; k < n; ++k) {
		int s = (ok ? k - a[k] : 0);
		int e = (ok ? k - a[k] : k - 2);
		for (int i = s; i <= e; ++i)
			ans += find(i, k, a);
	}
	return ans;
}
vector<int> construct_range(int M, int K) {
	vector<int> a; return a;
}
#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...