Submission #1260304

#TimeUsernameProblemLanguageResultExecution timeMemory
1260304am_aadvikTriple Peaks (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...