제출 #1253409

#제출 시각아이디문제언어결과실행 시간메모리
1253409fve53개의 봉우리 (IOI25_triples)C++20
16.29 / 100
20 ms2376 KiB
#include <bits/stdc++.h>
#include "triples.h"
using namespace std;

typedef long long i64;
constexpr int MAXN = 50000;

i64 count_triples(vector<int> H) {
    auto check = [&](int i, int j, int k) {
        array<int, 3> h = {H[i], H[j], H[k]};
        array<int, 3> d = {abs(i - j), abs(i - k), abs(j - k)};
        sort(h.begin(), h.end());
        sort(d.begin(), d.end());
        return h == d;
    };

    int N = H.size();
    i64 ans = 0;

    for (auto _: {0, 1}) {
        for (int i = 0; i < N; i++) {
            int j = i + H[i];
            if (j >= N) continue;
            
            int k1 = j - H[j];
            if (k1 >= 0 && k1 > i) {
                ans += check(i, j, k1);
            }

            int k2 = i + H[j];
            if (k2 < N && k2 < j && k2 != k1) {
                ans += check(i, j, k2);
            }
        } 
        reverse(H.begin(), H.end());
    }

    return ans;
}

vector<int> construct_range(int M, int K) {
    vector<int> A(M);
    iota(A.begin(), A.end(), 0);
    A[0] = 1;
    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...