Submission #1257411

#TimeUsernameProblemLanguageResultExecution timeMemory
1257411math_rabbit_10283개의 봉우리 (IOI25_triples)C++20
11 / 100
25 ms20804 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; set<pair<int, int>> res[202020]; long long count_triples(vector<int> H) { int N = H.size(); long long ans = 0; int i, j, k; for (j = 0; j < N; j++) { // case 1 i = j - H[j]; if (i >= 0) { k = i + H[i]; if (k < N && H[k] == k-j) res[j].insert({i, k}); k = j + H[i]; if (k < N && H[k] == k-i) res[j].insert({i, k}); } // case 2 k = j + H[j]; if (k < N) { i = k - H[k]; if (i >= 0 && H[i] == j-i) res[j].insert({i, k}); i = j - H[k]; if (i >= 0 && H[i] == k-i) res[j].insert({i, k}); } } // case 3-1 for (i = 0; i < N; i++) { j = i + H[i]; if (j >= N) continue; k = i + H[j]; if (k >= N) continue; if (H[k] == k-j) res[j].insert({i, k}); } for (j = 0; j < N; j++) { ans += res[j].size(); } return ans; } vector<int> construct_range(int M, int K) { int N = M; vector<int> result(N); for (int i = 0; i < N; i++) { if (i % 2 == 0) result[i] = i+1; else result[i] = N-i; } return result; }
#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...