제출 #1252538

#제출 시각아이디문제언어결과실행 시간메모리
1252538SamAnd3개의 봉우리 (IOI25_triples)C++20
11 / 100
18 ms2756 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; #define m_p make_pair #define all(x) (x).begin(),(x).end() #define sz(x) ((int)(x).size()) #define fi first #define se second typedef long long ll; mt19937 rnd(chrono::steady_clock::now().time_since_epoch().count()); mt19937 rnf(2106); const int N = 200005; int n; int h[N]; int aa[3], bb[3]; bool stg(int i, int j, int k) { assert(1 <= i && i < j && j < k && k <= n); aa[0] = h[i]; aa[1] = h[j]; aa[2] = h[k]; bb[0] = j - i; bb[1] = k - j; bb[2] = k - i; sort(aa, aa + 3); sort(bb, bb + 3); return (aa[0] == bb[0] && aa[1] == bb[1] && aa[2] == bb[2]); } long long count_triples(std::vector<int> H) { n = sz(H); for (int i = 1; i <= n; ++i) h[i] = H[i - 1]; ll ans = 0; for (int i = 1; i <= n; ++i) { int k = i + h[i]; if (k > n) continue; if (h[k] >= h[i]) continue; int j1 = i + h[k]; if (stg(i, j1, k)) ++ans; int j2 = k - h[k]; if (j1 != j2 && stg(i, j2, k)) ++ans; } for (int k = 1; k <= n; ++k) { int i = k - h[k]; if (i < 1) continue; if (h[i] >= h[k]) continue; int j1 = k - h[i]; if (stg(i, j1, k)) ++ans; int j2 = i + h[i]; if (j1 != j2 && stg(i, j2, k)) ++ans; } 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...