Submission #1250579

#TimeUsernameProblemLanguageResultExecution timeMemory
1250579s4dzTriple Peaks (IOI25_triples)C++20
Compilation error
0 ms0 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; //sub4: #define int long long std::vector<int> construct_range(int M, int K) { return{}; } /*long long count_triples(vector<int> H) { int n = H.size(); ll ans = 0; for (int k = 0; k < n; k++) { int c = H[k]; int i = k - c; if (i < 0 || i >= n) continue; int a = H[i]; if (a > c - a) continue; int need = c - a; int j1 = i + a; int j2 = k - a; if (i < j1 && j1 < k && H[j1] == need) ans++; if (j2 != j1 && i < j2 && j2 < k && H[j2] == need) ans++; } return ans; }*/ long long count_triples(vector<int> H) { int n = H.size(); long long ans = 0; for (int i = 0; i < n; i++) { int k = i + H[i]; if (k >= n) continue; int d = H[k]; int j1 = i + d; int j2 = k - d; if (j1 == j2) { if (i < j1 && j1 < k) { if (H[j1] == k - j1) ans++; } } else { if (i < j1 && j1 < k) { if (H[j1] == k - j1) ans++; } if (i < j2 && j2 < k) { if (H[j2] == j2 - i) ans++; } } } for (int k = 0; k < n; k++) { int i = k - H[k]; int d = H[i]; int j1 = i + d; int j2 = k - d; if (j1 == j2) { if (i < j1 && j1 < k) { if (H[j1] == k - j1) ans++; } } else { if (i < j1 && j1 < k) { if (H[j1] == k - j1) ans++; } if (i < j2 && j2 < k) { if (H[j2] == j2 - i) ans++; } } } for (int i = 0; i < n; i++) { int j = i + H[i]; if (j >= n) continue; int k = i + H[j]; if (k >= n) continue; if (k > j && H[k] == k - j) ans++; } unordered_map<int, vector<int>> nhom; for (int i = 0; i < n; i++) { int x = H[i] - i; nhom[x].push_back(i); } for (auto &p : nhom) { int x = p.first; vector<int> A = p.second; sort(A.begin(), A.end()); for (int u = 0; u < A.size(); u++) { int i = A[u]; for (int v = u + 1; v < A.size(); v++) { int j = A[v]; int k = i + j + x; if (k >= n) break; if (H[i] == j - i) continue; if (H[k] == j - i) ans++; } } } return ans; }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccrOidjE.o: in function `main':
grader.cpp:(.text.startup+0x18a): undefined reference to `construct_range(int, int)'
/usr/bin/ld: grader.cpp:(.text.startup+0x37b): undefined reference to `count_triples(std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status