Submission #1261920

#TimeUsernameProblemLanguageResultExecution timeMemory
1261920Canuc80k3개의 봉우리 (IOI25_triples)C++20
Compilation error
0 ms0 KiB
#include "bits/stdc++.h" using namespace std; using ll = long long; using ld = long double; using ull = unsigned long long; map<array<ll, 3>, bool> m; void add(ll i, ll j, ll k) { if (j < i || k < j || k < i) return; vector<ll> a = {i, j, k}; vector<ll> b = {H[i], H[j], H[k]}; sort(b.begin(), b.end()); for (int i = 0; i < 3; i ++) if (a[i] != b[i]) return; m[{i, j, k}] = 1; } long long count_triples(std::vector<int> H) { // #TH: a[k] max for (int k = 2; k < H.size(); k ++) { int i = k - H[k]; if (i < 0 || H[i] >= H[k]) continue; int j1 = k - H[i], j2 = i + H[i]; if (j1 < 0 || H[j1] >= H[k] || H[j1] != j1 - i) j1 = -1; if (j2 >= H.size() || H[j2] >= H[k] || H[j2] != k - j2) j2 = -1; if (j1 != -1) add(i, j1, k); if (j2 != -1) add(i, j2, k); } cerr << "A[k] max: " << m.size() << endl; // #TH: a[i] max for (int i = 0; i + 2 < H.size(); i ++) { int k = i + H[i]; if (k >= H.size() || H[k] >= H[i]) continue; int j1 = k - H[k], j2 = i + H[k]; if (j1 < 0 || H[j1] >= H[i] || H[j1] != j1 - i) j1 = -1; if (j2 >= H.size() || H[j2] >= H[i] || H[j2] != k - j2) j2 = -1; if (j1 != -1) add(i, j1, k); if (j2 != -1) add(i, j2, k); } cerr << "A[i] max: " << m.size() << endl; // #TH: a[j] max, j - i = a[i] for (int i = 0; i + 2 < H.size(); i ++) { int j = i + H[i]; if (j >= H.size() || H[j] <= H[i]) continue; int k = i + H[j]; if (k >= H.size() || H[k] >= H[j]) k = -1; if (k != -1) add(i, j, k); } cerr << "A[j] max, j - i = a[i]: " << m.size() << endl; // #TH: a[j] max, j - i = a[k] && j - i != a[i] for (int i = 0; i + 2 < H.size(); i ++) { for (int k = i + 2; k < H.size(); k ++) { int j = i + H[k]; if (j != k - H[i] || j >= H.size()) continue; if (H[i] >= H[j] || H[j] <= H[k] || j - i == H[i]) continue; add(i, j, k); } } cerr << "A[j] max, j - i = a[k] && j - i != a[i]: " << m.size() << endl; return m.size(); } std::vector<int> construct_range(int M, int K) { // vector<int> res; res.push_back(1); // for (int i = 1; i < M; i ++) res.push_back(i); // return res; }

Compilation message (stderr)

triples.cpp: In function 'void add(ll, ll, ll)':
triples.cpp:12:21: error: 'H' was not declared in this scope
   12 |     vector<ll> b = {H[i], H[j], H[k]};
      |                     ^
triples.cpp:12:37: error: could not convert '{<expression error>, <expression error>, <expression error>}' from '<brace-enclosed initializer list>' to 'std::vector<long long int>'
   12 |     vector<ll> b = {H[i], H[j], H[k]};
      |                                     ^
      |                                     |
      |                                     <brace-enclosed initializer list>
triples.cpp: In function 'std::vector<int> construct_range(int, int)':
triples.cpp:62:1: warning: no return statement in function returning non-void [-Wreturn-type]
   62 | }
      | ^