Submission #1281558

#TimeUsernameProblemLanguageResultExecution timeMemory
1281558M_W_13Triple Peaks (IOI25_triples)C++20
0 / 100
13 ms2364 KiB
#include "triples.h"
#include <bits/stdc++.h>

using namespace std;
#define rep(i, n) for (int i = 0; i < (n); i++)
typedef long long ll;
#define pb push_back
#define st first
#define nd second
#define pii pair<int, int>
#define pll pair<ll, ll>
#define all(a) a.begin(), a.end()

long long count_triples(std::vector<int> T) {
  int n = T.size();
  ll ans = 0;
  rep(i, n) {
    int j = i + T[i];
    if (j >= n) continue;
    int k[3];
    k[0] = j - T[j];
    k[1] = i + T[j];
    k[2] = j + T[j];
    rep(c, 3) {
      // cout << i << " " << j << " " << k[c] << '\n';
      if (k[c] < 0 || k[c] >= n) continue;
      if (c == 0 && k[c] < i) continue;
      int r = k[c];
      if (i == j || j == r || i == r) continue;
      int t1 = abs(i - j);
      int t2 = abs(i - r);
      int t3 = abs(j - r);
      if (t2 > t3) swap(t2, t3);
      if (t1 > t2) swap(t1, t2);
      if (t2 > t3) swap(t2, t3);
      int a1 = T[i];
      int a2 = T[j];
      int a3 = T[r];
      if (a2 > a3) swap(a2, a3);
      if (a1 > a2) swap(a1, a2);
      if (a2 > a3) swap(a2, a3);
      if (a1 != t1 || a2 != t2 || a3 != t3) continue;
      ans++;
    }
  }
  // vector<int> jakie[2 * n];
  // rep(i, n) {
  //   int x = T[i] - i + 
  // }
  return ans;
}

std::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...