Submission #1257411

#TimeUsernameProblemLanguageResultExecution timeMemory
1257411math_rabbit_1028Triple Peaks (IOI25_triples)C++20
11 / 100
25 ms20804 KiB
#include "triples.h"

#include <bits/stdc++.h>
using namespace std;

set<pair<int, int>> res[202020];

long long count_triples(vector<int> H) {
    int N = H.size();
    long long ans = 0;
    int i, j, k;
    for (j = 0; j < N; j++) {
        // case 1
        i = j - H[j];
        if (i >= 0) {
            k = i + H[i];
            if (k < N && H[k] == k-j) res[j].insert({i, k});
            k = j + H[i];
            if (k < N && H[k] == k-i) res[j].insert({i, k});
        }
        // case 2
        k = j + H[j];
        if (k < N) {
            i = k - H[k];
            if (i >= 0 && H[i] == j-i) res[j].insert({i, k});
            i = j - H[k];
            if (i >= 0 && H[i] == k-i) res[j].insert({i, k});
        }
    }
    // case 3-1
    for (i = 0; i < N; i++) {
        j = i + H[i];
        if (j >= N) continue;
        k = i + H[j];
        if (k >= N) continue;
        if (H[k] == k-j) res[j].insert({i, k});
    }

    for (j = 0; j < N; j++) {
        ans += res[j].size();
    }
    return ans;
}

vector<int> construct_range(int M, int K) {
    int N = M;
    vector<int> result(N);
    for (int i = 0; i < N; i++) {
        if (i % 2 == 0) result[i] = i+1;
        else result[i] = N-i;
    }
    return result;
}
#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...