Submission #1329709

#TimeUsernameProblemLanguageResultExecution timeMemory
1329709vahagngTriple Peaks (IOI25_triples)C++20
5.29 / 100
15 ms3496 KiB
#include "triples.h"
#include <bits/stdc++.h>
using namespace std;

#define ll long long
#define all(v) v.begin(),v.end()

vector<int>A;

bool check(int i, int j, int k){
  vector<int>a = {A[i], A[j], A[k]};
  vector<int>b = {j - i, k - i, k - j};
  sort(all(a));
  sort(all(b));
  return a == b;
}

long long count_triples(vector<int> H) {
  long long ans = 0;
  A = H;
  vector<tuple<int,int,int>>vecs;
  for(int i = 0; i < H.size(); i++){
    int j = H[i] + i;
    if(j >= H.size()) continue;
    int k = j + H[j];
    if(k >= H.size()) continue;
    vecs.push_back({i, j, k});
  }
  for(int i = 0; i < H.size(); i++){
    int k = i + H[i];
    if(k >= H.size()) continue;
    int j = i + H[k];
    if(j >= H.size() || j > k) continue;
    vecs.push_back({i, j, k});
  }
  set<set<int>>st;
  for(auto [i, j, k] : vecs){
    if(check(i, j, k)) st.insert(set<int>{i, j, k});
  }
  return st.size();
}

vector<int> construct_range(int M, int K) {
  int n = M;
  vector<int> a(n, 1);
  for (int i = 0; i < n; i += 3) {
    a[i] = 2;
  }
  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...