제출 #1258125

#제출 시각아이디문제언어결과실행 시간메모리
1258125allin27xTriple Peaks (IOI25_triples)C++20
72.65 / 100
169 ms12360 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; #define int long long int ans = 0; int n; void count1(vector<signed> &h){ for (int idx = 0; idx<n; idx++){ int x = h[idx]; int idh = idx - x; if (idh < 0) continue; int y = h[idh] - x; if (y <= 0 || y==x) continue; int idy = idx + y; if (idy >= n) continue; if (h[idy] == y) ans++; } } void count2(vector<signed> &h){ for (int idx = 0; idx<n; idx++){ int x = h[idx]; int idy = idx + x; if (idy >= n) continue; int y = h[idy]; int idh = idx - y; if (idh < 0) continue; if (h[idh] == x + y) ans++; } } void count3(vector<signed> &h){ for (int idx = 0; idx<n; idx++){ int x = h[idx]; int idh = idx + x; if (idh >= n) continue; int y = h[idh] - x; if (y <= 0 || y==x) continue; int idy = idh + y; if (idy >= n) continue; if (h[idy] == y) ans++; } } void count4(vector<signed> &h){ vector<vector<int>> tl(n); for (int i=0; i<n; i++){ int j = i - h[i]; if (j< 0) continue; tl[j].push_back(h[i]); } for (int idx=0; idx<n; idx++){ int x = h[idx]; if (idx + x >= n) continue; for (int y: tl[idx+x]){ int idh = idx + y; if(idh>=n) continue; if (h[idh] == x+y) ans++; } } } long long count_triples(std::vector<signed> h) { n = h.size(); auto rh = h; reverse(rh.begin(), rh.end()); count1(h); count1(rh); count2(h); count2(rh); count3(h); count4(h); return ans; } std::vector<signed> construct_range(signed M, signed K) { int n = M; vector<signed> a(n,0); for (int i=0; i<n/2; i++) a[i] = n/2-i; a[n/2] = n/2; for (int i=n-1; i>n/2; i--) a[i] = n/2 - (n-i); return a; }
#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...