제출 #1249805

#제출 시각아이디문제언어결과실행 시간메모리
1249805kduckp3개의 봉우리 (IOI25_triples)C++20
8.17 / 100
23 ms1864 KiB
#include "triples.h"
#include <vector>
using namespace std;

long long count_triples(std::vector<int> H) {
    long long res = 0;
    int n = H.size();

    // 1) Brute-force với n ≤ 100
    if (n <= 100) {
        for (int i = 0; i < n; i++)
            for (int j = i + 1; j < n; j++)
                for (int k = j + 1; k < n; k++) {
                    vector<int> height = {H[i], H[j], H[k]};
                    vector<int> dist   = {j - i, k - i, k - j};
                    sort(height.begin(), height.end());
                    sort(dist.begin(),   dist.end());
                    if (height == dist)
                        res++;
                }
        return res;
    }

    // 2) Kiểm tra xem có phải giá trị đều ≤ 10 hay không
    for (int x : H) {
        if (x > 10) {
            // chưa xử lý trường hợp chung lớn hơn 10
            return 0;
        }
    }

    // 3) Với mỗi cặp a<b sao cho c=a+b ≤ 10
    for (int a = 1; a <= 10; a++) {
        for (int b = a + 1; b <= 10; b++) {
            int c = a + b;
            if (c > 10) break;

            // Duyệt i sao cho i+c < n
            for (int i = 0; i + c < n; i++) {
                if (H[i] != a) 
                    continue;
                if (H[i + c] != c) 
                    continue;

                // hai khả năng j = i+a hoặc j = i+b
                if (H[i + a] == b) 
                    res++;
                if (H[i + b] == b) 
                    res++;
            }
        }
    }

    return res;
}

std::vector<int> construct_range(int M, int K) {
    return {1, 1, 2};
}
#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...