제출 #1282823

#제출 시각아이디문제언어결과실행 시간메모리
1282823kawhiet3개의 봉우리 (IOI25_triples)C++20
26.50 / 100
2096 ms42512 KiB
#include <bits/stdc++.h> #include "triples.h" using namespace std; long long count_triples(vector<int> h) { int n = h.size(); set<array<int, 3>> s; auto f = [&](int i, int j, int k) { array<int, 3> c = {i, j, k}; sort(c.begin(), c.end()); if (s.count(c)) { return false; } vector<int> a = {abs(i - j), abs(i - k), abs(j - k)}; vector<int> b = {h[i], h[j], h[k]}; sort(a.begin(), a.end()); sort(b.begin(), b.end()); if (a == b) { s.insert(c); return true; } return false; }; long long res = 0; for (int i = 0; i < n; i++) { if (i - h[i] >= 0) { int j = i - h[i]; for (int k = j + 1; k < i; k++) { res += f(i, j, k); } } if (i + h[i] < n) { int j = i + h[i]; for (int k = i + 1; k < j; k++) { res += f(i, j, k); } } for (int j = 0; j + h[i] < n; j++) { int k = j + h[i]; if (j != i && k != i) { res += f(i, j, k); } } } return res; } vector<int> res = {3, 1, 1, 2, 3, 3, 1, 2, 1, 4, 3, 2, 3, 1, 2, 1, 4, 5, 4, 3}; vector<int> construct_range(int M, int K) { vector<int> ret; while (ret.size() < M) { for (auto x : res) { ret.push_back(x); } } return ret; }
#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...