Submission #1251024

#TimeUsernameProblemLanguageResultExecution timeMemory
1251024fadyscubeTriple Peaks (IOI25_triples)C++20
1.35 / 100
2094 ms1864 KiB
#include "triples.h"
#include <set>

using namespace std;

int checkTriple (vector<int> &H, int a, int b, int c) {
  int n = H.size();
  if (c < 0 || c >= n) return 0;
  multiset<int> ds = {abs(b-a), abs(c-a), abs(c-b)};
  multiset<int> hs = {H[a], H[b], H[c]};
  return (ds == hs ? 1 : 0);
}

long long count_triples(std::vector<int> H) {
  long long ans = 0;
  int n = H.size();
  for (int i = 0; i < n-1; i++) {
    for (int j = i+1; j < n; j++) {
      //ans += checkTriple(H, i, j, i-H[i]);
      //ans += checkTriple(H, i, j, i+H[i]);
      //ans += checkTriple(H, i, j, i-H[j]);
      //ans += checkTriple(H, i, j, i+H[j]);
      
      //ans += checkTriple(H, i, j, j-H[i]);
      ans += checkTriple(H, i, j, j+H[i]);
      //ans += checkTriple(H, i, j, j-H[j]);
      ans += checkTriple(H, i, j, j+H[j]);
    }
  }
  return ans;
}

std::vector<int> construct_range(int M, int K) {
  vector<int> v = {8, 9, 16, 17, 7, 2, 16, 3, 1, 1, 6, 4, 18, 9, 8, 5, 9, 18, 17, 12};
  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...