Submission #1250667

#TimeUsernameProblemLanguageResultExecution timeMemory
1250667Cebrayil09Triple Peaks (IOI25_triples)C++20
24 / 100
2093 ms20652 KiB
#include "triples.h"
#include <bits/stdc++.h>

using namespace std;

#define ll long long

long long count_triples(vector<int> h) {
    int mx = *max_element(h.begin(), h.end());

    ll cnt = 0;
    if(mx <= 10) {
        for(int i = 0;i < h.size();i++) {
            for(int k = i+1;k <= min((int)h.size()-1, i+10);k++) {
                for(int j = i+1;j < k;j++) {
                    vector<int> a = {h[i], h[j], h[k]};
                    vector<int> b = {j-i, k-i, k-j};

                    sort(a.begin(), a.end());
                    sort(b.begin(), b.end());

                    cnt += (a == b);
                }
            }
        }

        return cnt;
    }

    set<vector<int>> s;
    for(int i = 0;i < h.size();i++) {
        for(int j = i+1;j < h.size()-1;j++) {
            for(int k : {i+h[i], i+h[j], i-h[i], i-h[j], j+h[i], j+h[j], j-h[i], j-h[j]}) {
                if(k < 0 || k >= h.size()) continue;

                vector<int> a = {j-i, abs(k-i), abs(k-j)};
                vector<int> b ={h[i], h[j], h[k]};

                sort(a.begin(), a.end());
                sort(b.begin(), b.end());

                if(a == b) {
                    vector<int> in = {i,j,k};
                    sort(in.begin(), in.end());

                    s.insert(in);
                }
            }
        }
    }

    cnt = s.size();
    return cnt;
}

vector<int> construct_range(int M, int K) {
    vector<int> v;
    for(int i = 0, j = 0;i < M;i++) {
        v.push_back(j + (j == 0));

        if(j == 2) j = 0;
    }

    return v;
}
#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...