제출 #1288036

#제출 시각아이디문제언어결과실행 시간메모리
1288036nikoloz-ch3개의 봉우리 (IOI25_triples)C++20
19.86 / 100
2107 ms397776 KiB
#include <bits/stdc++.h> using namespace std; multiset<tuple<int,int,int>> ss; void ins(int a, int b, int c){ ss.insert({a,b,c}); ss.insert({b,a,c}); ss.insert({b,c,a}); ss.insert({c,a,b}); ss.insert({a,c,b}); ss.insert({c,b,a}); } long long count_triples(std::vector<int> H){ int N = H.size(), ans = 0; if(N <= 5000){ map<int,vector<int>> mp; for(int i = 0; i < N; i++){ mp[i-H[i]].push_back(i); } for(int i = 0; i < N; i++){ for(int j = i+1; j < N; j++){ const int k = j-i; if(k != H[i] and k != H[j]){ if(k != abs(H[i]-H[j])) continue; const int p = j+min(H[i],H[j]); if(p >= N or H[p] != k or p <= j) continue; ans++; ins(i,j,p); continue; } if(k == H[i]){ for(auto &t : mp[i]){ if(t <= j) continue; if(t-j != H[j]) continue; ans++; ins(i,j,t); } for(auto &t : mp[j]){ if(t <= j) continue; if(t-i != H[j]) continue; ans++; ins(i,j,t); } continue; } for(auto &t : mp[i]){ if(t <= j) continue; if(abs(t-j) != H[i]) continue; ans++; ins(i,j,t); } for(auto &t : mp[j]){ if(t <= j) continue; if(abs(t-i) != H[i]) continue; ans++; ins(i,j,t); } continue; } } return ans; } for(int i = 0; i < N-20; i++){ vector<int> a; for(int j = i; j < i+20; j++){ a.push_back(H[j]); } int p = count_triples(a); } return ss.size(); } std::vector<int> construct_range(int M, int K){ vector<int> a = {4, 1, 4, 3, 2, 6, 4, 1, 4, 3, 2, 6, 4, 1, 4, 3, 2, 6, 1, 2}; if(M == 20) return a; if(M == 500){ for(int i = 0; i < 24; i++){ auto op = a; for(int j = 0; j < 20; j++) a.push_back(op[j]); } return a; } if(M == 5000){ for(int i = 0; i < 245; i++){ auto op = a; for(int j = 0; j < 20; j++) a.push_back(op[j]); } return a; } if(M == 30000){ for(int i = 0; i < 1200; i++){ auto op = a; for(int j = 0; j < 20; j++) a.push_back(op[j]); } return a; } }

컴파일 시 표준 에러 (stderr) 메시지

triples.cpp: In function 'std::vector<int> construct_range(int, int)':
triples.cpp:95:1: warning: control reaches end of non-void function [-Wreturn-type]
   95 | }
      | ^
#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...