Submission #1249813

#TimeUsernameProblemLanguageResultExecution timeMemory
1249813gelastropodTriple Peaks (IOI25_triples)C++20
0 / 100
2095 ms12868 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; long long count_triples(vector<int> H) { int N = H.size(); vector<vector<int>> locs(N, vector<int>()); for (int i = 0; i < N; i++) { locs[H[i]].push_back(i); } int ans = 0; for (int i = 0; i < N; i++) { for (int j = i + 1; j < N; j++) { int dist = j - i; if (H[i] != dist && H[j] != dist) { if (i - H[i] >= 0 && i - H[i] != j) { int k = i - H[i]; if (H[k] == dist && abs(j - k) == H[j]) ans++; } if (i - H[j] >= 0 && i - H[j] != j && H[i] != H[j]) { int k = i - H[j]; if (H[k] == dist && abs(j - k) == H[i]) ans++; } if (i + H[i] < N && i + H[i] != j) { int k = i + H[i]; if (H[k] == dist && abs(j - k) == H[j]) ans++; } if (i + H[j] < N && i + H[j] != j && H[i] != H[j]) { int k = i + H[j]; if (H[k] == dist && abs(j - k) == H[i]) ans++; } } else if (H[i] == dist) { if (i - H[j] >= 0 && i - H[j] != j) { int k = i - H[j]; if (H[k] == abs(j - k)) ans++; } if (j - H[j] >= 0 && j - H[j] != i) { int k = j - H[j]; if (H[k] == abs(i - k)) ans++; } if (i + H[j] < N && i + H[j] != j && j - H[j] != i + H[j]) { int k = i + H[j]; if (H[k] == abs(j - k)) ans++; } if (j + H[j] < N && j + H[j] != i && i - H[j] != j + H[j]) { int k = j + H[j]; if (H[k] == abs(i - k)) ans++; } } else { if (i - H[i] >= 0 && i - H[i] != j) { int k = i - H[i]; if (H[k] == abs(j - k)) ans++; } if (j - H[i] >= 0 && j - H[i] != i) { int k = j - H[i]; if (H[k] == abs(i - k)) ans++; } if (i + H[i] < N && i + H[i] != j && j - H[j] != i + H[j]) { int k = i + H[i]; if (H[k] == abs(j - k)) ans++; } if (j + H[i] < N && j + H[i] != i && i - H[i] != j + H[j]) { int k = j + H[i]; if (H[k] == abs(i - k)) ans++; } } } } return ans / 3; } 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...