Submission #1263841

#TimeUsernameProblemLanguageResultExecution timeMemory
1263841SkillIssueWAGuyTriple Peaks (IOI25_triples)C++20
41.53 / 100
2096 ms50260 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; #define ll long long int N; vector<int> H; vector<vector<int>> F(0); bool _L (vector<int> a, vector<int> b){ for (int i = 0; i < 3; i++){ if (a[i] != b[i]) return a[i] < b[i]; } return false; }; bool _E (vector<int> a, vector<int> b){ for (int i = 0; i < 3; i++) if (a[i] != b[i]) return false; return true; } vector<int> _MK (int a, int b, int c){ vector<int> o = {a, b, c}; sort(o.begin(), o.end()); return o; } void _CH (vector<int> a){ auto p = _MK (abs(a[0] - a[1]), abs(a[1] - a[2]), abs(a[0] - a[2])); for (int i = 0; i < 3; i++) if (a[i] < 0 || a[i] >= N) return; auto q = _MK (H[a[0]], H[a[1]], H[a[2]]); if (_E(p, q)) F.push_back(a); } long long count_triples(std::vector<int> h) { N = h.size(); H = h; bool st = true; for (int i = 0; i < N-1; i++) { if (H[i+1] < H[i]) st = false; } for (int i = 0; i < N; i++) { // forward int p = i + H[i]; if (p < N) { _CH(_MK(i, p, p+H[p])); _CH(_MK(i, p, p-H[p])); _CH(_MK(i, p, i+H[p])); _CH(_MK(i, p, i-H[p])); } // backward p = i - H[i]; if (p >= 0) { _CH(_MK(i, p, p+H[p])); _CH(_MK(i, p, p-H[p])); _CH(_MK(i, p, i+H[p])); _CH(_MK(i, p, i-H[p])); } if (st) continue; for (int j = i - H[i] + 1; j < i; j++){ _CH({j, i, j + H[i]}); } } // make return sort(F.begin(), F.end(), _L); int out= F.size(); for (int i = 1; i < F.size(); i++) { if (_E(F[i], F[i-1])) out--; } return out; } std::vector<int> construct_range(int M, int K) { vector<int> out; vector<int> cur = {1,2,1,3}; for (int i =0 ; i < M; i++){ out.push_back(cur[i%4]); } return out; }
#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...