Submission #1250422

#TimeUsernameProblemLanguageResultExecution timeMemory
1250422s4dzTriple Peaks (IOI25_triples)C++20
0 / 100
2094 ms14112 KiB
#include <bits/stdc++.h> using namespace std; using ll = long long; //sub4: std::vector<int> construct_range(int M, int K) { return{}; } ll count_triples(vector<int> H) { int n = H.size(); ll ans = 0; //hi = k - i for (int i = 0; i < n; i++) { int k = i + H[i]; if (k < 0 || k >= n) continue; //H[k] == j - i int j1 = i + H[k]; if (j1 > i && j1 < k && j1 < n && H[j1] == k - j1) ans++; //H[k] == k - j int j2 = k - H[k]; if (j2 > i && j2 < k && j2 < n && H[j2] == j2 - i) ans++; } //hk = k - i for (int k = 0; k < n; k++) { int i = k - H[k]; if (i < 0 || i >= n) continue; //H[i] == j - i => j = i + H[i], check H[j] == k - j int j1 = i + H[i]; if (j1 > i && j1 < k && j1 < n && H[j1] == k - j1) ans++; //H[i] == k - j => j = k - H[i], check H[j] == j - i int j2 = k - H[i]; if (j2 > i && j2 < k && j2 < n && H[j2] == j2 - i) ans++; } //hj = k - i, hi = j - i, hk = k - j for (int i = 0; i < n; i++) { int j = i + H[i]; if (j < 0 || j >= n) continue; int k = i + H[j]; if (k < 0 || k >= n) continue; if (j < k && H[j] == k - i && H[k] == k - j) ans++; } unordered_map<ll, vector<int>> nhom; for(int i = 1; i <= n; i++) { nhom[H[i] - i].push_back(i); } for(auto &kv : nhom) { ll x = kv.first; auto &v = kv.second; int m = v.size(); for(int a = 0; a < m; a++) { int i = v[a]; for(int b = a+1; b < m; b++) { int j = v[b]; int k = i + j + x; if(k >= 1 && k <= n && k != i && k != j) ans++; } } } return ans; }
#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...