제출 #1285783

#제출 시각아이디문제언어결과실행 시간메모리
1285783eri163개의 봉우리 (IOI25_triples)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h> #include "triples.h" using namespace std; long long solve(int hi,int hj, int ht, int i, int j, int t){ vector <int> v,v1; v.push_back(hi); v.push_back(hj); v.push_back(ht); v1.push_back(j-i); v1.push_back(t-j); v1.push_back(t-i); sort(v.begin(),v.end()); sort(v1.begin(),v1.end()); int qwe=1; for (int zz=0; zz<3; zz++){ if (v[zz]!=v1[zz]){qwe=0;} } return qwe; } long long count_triples(vector<int> h) { long long n=h.size(); long long ans=0; if (n<=2000){ for (int i=0; i<n; i++){ for (int j=i+1; j<n; j++){ int ds1=j-i; if (ds1==h[j]){ int ps1,ps2,ps3,ps4,ds2; ds2=h[i]; ps1=i-ds2; ps2=j-ds2; ps3=i+ds2; ps4=j+ds2; if (ps1>=0 && ps1<n){ans+=solve(h[i],h[j],h[ps1],i,j,ps1);} if (ps2>=0 && ps2<n){ans+=solve(h[i],h[j],h[ps2],i,j,ps2);} if (ps3>=0 && ps3<n){ans+=solve(h[i],h[j],h[ps3],i,j,ps3);} if (ps4>=0 && ps4<n){ans+=solve(h[i],h[j],h[ps4],i,j,ps4);} } else if (ds1==h[i]){ int ps1,ps2,ps3,ps4,ds2; ds2=h[j]; ps1=i-ds2; ps2=j-ds2; ps3=i+ds2; ps4=j+ds2; if (ps1>=0 && ps1<n){ans+=solve(h[i],h[j],h[ps1],i,j,ps1);} if (ps2>=0 && ps2<n){ans+=solve(h[i],h[j],h[ps2],i,j,ps2);} if (ps3>=0 && ps3<n){ans+=solve(h[i],h[j],h[ps3],i,j,ps3);} if (ps4>=0 && ps4<n){ans+=solve(h[i],h[j],h[ps4],i,j,ps4);} } else if(ds1+min(h[i],h[j])==max(h[i],h[j])){ int ps1,ps2; ps1=i-min(h[i],h[j]); ps2=j+min(h[i],h[j]); if (ps1>=0 && ps1<n){ans+=solve(h[i],h[j],h[ps1],i,j,ps1);} if (ps2>=0 && ps2<n){ans+=solve(h[i],h[j],h[ps2],i,j,ps2);} } } } return(ans); } else{ vector<vector<int>> pos(max_h+1); for (int i=0; i<n; i++){pos[h[i]].push_back(i);} long long ans=0; for (int i=0; i<n; i++) { int hi=h[i]; int j1=i+hi; int j2=i-hi; for (int j : {j1, j2}) { if (j<0 || j>=n || j==i) continue; int hj=h[j]; int k1=i+hj; int k2=j+hi; int k3=j+hj; int k4=i-hj; for (int k : {k1, k2, k3, k4}) { if (k < 0 || k >= n || k == i || k == j) continue; vector<int> vals = {hi, hj, h[k]}; vector<int> dist = {abs(j-i), abs(k-j), abs(k-i)}; sort(vals.begin(), vals.end()); sort(dist.begin(), dist.end()); if (vals == dist) ans++; } } } return ans / 3;} } vector<int> construct_range(int M, int K) {vector <int> vv;return(vv);} /* int main(){ cout << count_triples({4, 1, 4, 3, 2, 6, 1}); } */ //

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

triples.cpp: In function 'long long int count_triples(std::vector<int>)':
triples.cpp:89:29: error: 'max_h' was not declared in this scope
   89 |     vector<vector<int>> pos(max_h+1);
      |                             ^~~~~