제출 #1251015

#제출 시각아이디문제언어결과실행 시간메모리
1251015JoksimKaktusTriple Peaks (IOI25_triples)C++20
18 / 100
2098 ms48924 KiB
#include "triples.h"
#include <bits/stdc++.h>

using namespace std;

bool check(vector<int> a,vector<int> b){
    sort(a.begin(), a.end());
    sort(b.begin(), b.end());
    for(int i = 0;i < 3;i++){
        if(a[i] != b[i])return false;
    }
    return true;
}
//(v[a] != v[b] && v[a] != v[c] && v[b] != v[c])
long long count_triples(vector<int> v) {
    set<set<int>> s;
    long long res = 0;
    int n = v.size();
    for(int a = 0;a < n;a++){
        int b = a + v[a];
        int c = b + v[b];
        if(c < n && b < n){
            bool good = check({abs(a-b),abs(a-c),abs(b-c)},{v[a],v[b],v[c]});
            if(good && !s.count({a,b,c})){
                s.insert({a,b,c});
                res++;
            }
        }
        c = b - v[b];
        if(c >= 0 && c != a && b < n){
            bool good = check({abs(a-b),abs(a-c),abs(b-c)},{v[a],v[b],v[c]});
            if(good && !s.count({a,b,c})){
                s.insert({a,b,c});
                res++;
            }
        }
        c = a + v[b];
        if(c < n && c != b && b < n){
            bool good = check({abs(a-b),abs(a-c),abs(b-c)},{v[a],v[b],v[c]});
            if(good && !s.count({a,b,c})){
                s.insert({a,b,c});
                res++;
            }
        }
        c = a- v[b];
        if(c >= 0 && b < n){
            bool good = check({abs(a-b),abs(a-c),abs(b-c)},{v[a],v[b],v[c]});
            if(good && !s.count({a,b,c})){
                s.insert({a,b,c});
                res++;
            }
        }

        for(b = 0;b < n-v[a];b++){
            c = b + v[a];
            if(c != a){
                bool good = check({abs(a-b),abs(a-c),abs(b-c)},{v[a],v[b],v[c]});
                if(good && !s.count({a,b,c})){
                    s.insert({a,b,c});
                    res++;
                }
            }

        }
    }
    return res;
}

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