Submission #1255806

#TimeUsernameProblemLanguageResultExecution timeMemory
1255806AlesL0Triple Peaks (IOI25_triples)C++20
11 / 100
88 ms8116 KiB
#include <bits/stdc++.h> #include "triples.h" using namespace std; typedef long long ll; bool check_triple(vector <int> a, vector <int> b){ sort(a.begin(), a.end()); sort(b.begin(), b.end()); if (a[0] != b[0] || a[1] != b[1] || a[2] != b[2])return 0; return 1; } void find_triples(vector <tuple<int, int, int>> &triples, ll n, vector <int> &H, int i, int j){ for (int x : {i, j}){ for (int y : {-H[j], H[j]}){ int z = x+y; if (z < 0 || z >= n || z == i || z == j)continue; if (check_triple({abs(i-j), abs(i-z), abs(j-z)}, {H[i], H[j], H[z]})){ vector <int> v = {i, j, z}; sort(v.begin(), v.end()); triples.push_back({v[0], v[1], v[2]}); } } } } /*bool cmp_triple(tuple <int, int, int> a, tuple <int, int, int> b){ if (get<0>(a) == get<0>(b)){ if (get<1>(a) == get<1>(b))return (get<2>(a) < get<2>(b)); return (get<1>(a) < get<1>(b)); } return (get<0>(a) < get<0>(b)); }*/ long long count_triples(std::vector<int> H) { ll n = H.size(); vector <tuple <int, int, int>> triples; for (int i = 0; i < n; i++){ if (i-H[i] >= 0)find_triples(triples, n, H, i, i-H[i]); if (i+H[i] < n)find_triples(triples, n, H, i, i+H[i]); } sort(triples.begin(), triples.end()); ll count = 0; if (!triples.empty()){ //cerr << get<0>(triples[0]) << " " << get<1>(triples[0]) << " " << get<2>(triples[0]) << "\n"; count++; } for (int i = 1; i < triples.size(); i++){ if (triples[i] != triples[i-1]){ count++; //cerr << get<0>(triples[i]) << " " << get<1>(triples[i]) << " " << get<2>(triples[i]) << "\n"; } } return count; } std::vector<int> construct_range(int M, int K) { return {}; }
#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...