Submission #1250373

#TimeUsernameProblemLanguageResultExecution timeMemory
1250373alex0152Triple Peaks (IOI25_triples)C++20
41.53 / 100
2097 ms1984 KiB
#include <bits/stdc++.h> using namespace std; const int nMax=2e5+5; long long count_triples(vector<int> H) { int n=H.size(),a[3],b[3],cand[10],cnt,p,x,y,z; long long ans=0; bool ok=1,ok1=1; for(int i=0; i<n; ++i) { if(H[i]>10) ok=0; if(i!=0 && H[i]<H[i-1]) ok1=0; } if(ok1) { for(int i=2; i<n; ++i) { if(i-H[i]>=0) { x=i-H[i]; z=i; y=x+H[x]; a[0]=H[x],a[1]=H[y],a[2]=H[z]; b[0]=z-y,b[1]=z-x,b[2]=y-x; sort(a,a+3); sort(b,b+3); if(a[0]==b[0] && a[1]==b[1] && a[2]==b[2]) ans++; if(x+H[x]!=z-H[x]) { y=z-H[x]; a[0]=H[x],a[1]=H[y],a[2]=H[z]; b[0]=z-y,b[1]=z-x,b[2]=y-x; sort(a,a+3); sort(b,b+3); if(a[0]==b[0] && a[1]==b[1] && a[2]==b[2]) ans++; } } } } else if(!ok) { for(int i=0; i<n-2; ++i) for(int j=i+2; j<n; ++j) { cnt=0; if(i+H[i]<j) cand[++cnt]=i+H[i]; if(i+H[j]<j) cand[++cnt]=i+H[j]; if(j-H[i]>i) cand[++cnt]=j-H[i]; if(j-H[j]>i) cand[++cnt]=j-H[j]; sort(cand+1,cand+cnt+1); for(int q=1; q<=cnt; ++q) if(q==1 || cand[q]!=cand[q-1]) { p=cand[q]; a[0]=H[i],a[1]=H[j],a[2]=H[p]; b[0]=j-i,b[1]=p-i,b[2]=j-p; sort(a,a+3); sort(b,b+3); if(a[0]==b[0] && a[1]==b[1] && a[2]==b[2]) ans++; } } } else { for(int i=0; i<n-2; ++i) for(int j=i+1; j<min(i+10,n-1); ++j) for(int p=j+1; p<min(i+11,n); ++p) { a[0]=H[i],a[1]=H[j],a[2]=H[p]; b[0]=j-i,b[1]=p-i,b[2]=p-j; sort(a,a+3); sort(b,b+3); if(a[0]==b[0] && a[1]==b[1] && a[2]==b[2]) ans++; } } return ans; } vector<int> construct_range(int M, int K) { vector<int> schema; int idk[5]; idk[1]=1,idk[2]=1,idk[3]=2,idk[4]=3; int cnt=0,x; for(int i=0; i<M; ++i) { if(cnt==4) cnt=0; cnt++; x=idk[cnt]; schema.push_back(x); } return schema; }
#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...