Submission #1257757

#TimeUsernameProblemLanguageResultExecution timeMemory
1257757mkkkkkkkkTriple Peaks (IOI25_triples)C++20
34.29 / 100
1279 ms1864 KiB
#include "triples.h" #include <bits/stdc++.h> using namespace std; map<int,int> mapa; bool check(int i,int j,int k,vector<int>& H) { if(i==j || i==k || j==k) return false; if(k<0 || k>=H.size()) return false; if(mapa[k]==true) return false; vector<int> vec={i,j,k}; sort(vec.begin(),vec.end()); vector<int> vec1={abs(j-i),abs(k-i),abs(k-j)},vec2={H[i],H[j],H[k]}; sort(vec2.begin(),vec2.end()); sort(vec1.begin(),vec1.end()); if(vec1==vec2) { mapa[k]=true; return true; } else return false; } long long count_triples(vector<int> H) { if(H.size()<=2000) { long long cnt=0; for(int i=0;i<H.size();i++) { for(int j=i+1;j<H.size();j++) { mapa.clear(); cnt+=check(i,j,j+H[i],H)+check(i,j,i+H[i],H)+check(i,j,j-H[i],H)+check(i,j,i-H[i],H); cnt+=check(i,j,j+H[j],H)+check(i,j,i+H[j],H)+check(i,j,j-H[j],H)+check(i,j,i-H[j],H); } } return cnt/3; } else { long long cnt=0; for(int i=2;i<H.size();i++) { if(i-H[i]>=0) { mapa.clear(); cnt+=check(i,i-H[i],i-H[i]+H[i-H[i]],H); cnt+=check(i,i-H[i],i-H[i-H[i]],H); } } return cnt; } } vector<int> construct_range(int M, int K) { vector<int> res; for(int i=0;i<M;i++) { if((i+1)%3==0) res.push_back(2); else res.push_back(1); } return res; }
#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...