Submission #1256254

#TimeUsernameProblemLanguageResultExecution timeMemory
1256254bynixTriple Peaks (IOI25_triples)C++20
22.40 / 100
2097 ms20548 KiB
#include "triples.h"
#include "bits/stdc++.h"
using namespace std;

set<vector<int>> pk;

void peak(int i, int j, int k, int a, int b, int c){
  vector<int> t = {i,j,k}; sort(t.begin(), t.end());
  vector<int> p = {abs(i-j), abs(j-k), abs(k-i)}, q = {a, b, c};
  sort(p.begin(), p.end()); sort(q.begin(), q.end());
  if (p[0] == q[0] && p[1] == q[1] && p[2] == q[2]){
    pk.insert({t[0],t[1],t[2]});
  }
}

long long count_triples(vector<int> H) {
  int N = H.size();
  int peaks = 0;
  for (int i = 0; i < N; i++){
    int v = H[i];
    for (int j = 0; j < N - v; j++){
      if (j == i || j + v == i) continue;
      peak(i, j, j+v, v, H[j], H[j+v]);
    }
    if (i + v < N){
      for (int j = 0; j < N; j++){
        if (j == i || j == i+v) continue;
        if (abs(i+v-j) == v) continue;
        peak(i, j, i+v, v, H[j], H[i+v]);
      }
    }
    if (i - v >= 0){
      for (int j = 0; j < N; j++){
        if (j == i || j == i-v) continue;
        if (abs(j-i+v) == v) continue;
        peak(i, j, i-v, v, H[j], H[i-v]);
      }
    }
  }
  return pk.size();
}

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