Submission #1259014

#TimeUsernameProblemLanguageResultExecution timeMemory
1259014SugarCubes69Triple Peaks (IOI25_triples)C++20
Compilation error
0 ms0 KiB
//orz Dominater069 #include <bits/stdc++.h> using namespace std; typedef long long int ll; long long count_triples(std::vector<int> h) { ll ans = 0; ll N = h.size(); for(int i=0;i<N;i++){ int k = h[i]+i,j; if(k>=N) continue; //h[j] = j-i, h[k] = k-j j = k-h[k]; if(i<j && j<k && h[j]==j-i) ans++; //h[j] = k-j, h[k] = j-i j = h[k]+i; if(j==k-h[k]) continue; if(i<j && j<k && h[j]==k-j) ans++; } for(int k=0;k<N;k++){ int i = k-h[k],j; if(i<0) continue; //h[i] = j-i, h[j] = k-j j = i+h[i]; if(i<j && j<k && h[j]==k-j) ans++; //h[i] = k-j, h[j] = j-i j = k-h[i]; if(j==i+h[i]) continue; if(i<j && j<k && h[j]==j-i) ans++; } for(int i=0;i<N;i++){ //h[i] = j-i, h[j]=k-i, h[k] = k-j int j = h[i]+i; int k = h[j]+i; if(i<j && j<k && h[k]==k-j) ans++; } vector<ll> grp[2*N+1]; for(int i=0;i<N;i++) grp[h[i]-i+N].push_back(i); for(int x=0;x<=2*N;x++){ if(grp[x].size()*grp[x].size()<=N){ for(int _i=0;_i<grp[x].size();_i++) for(int _j=_i+1;_j<grp[x].size();_j++){ int i=grp[x][_i],j=grp[x][_j]; //h[i] = k-j, h[j] = k-i h[k] = j-i int k = j+h[i]; if(k>=N) continue; if(i<j && j<k && h[j]==k-i && h[k]==j-i){ ans++; } } } else{ for(int k=0;k<N;k++){ //k-h[k]-x == 2i int _x = x-N; int tmp = k-h[k]-_x; if(tmp>=0 && tmp%2==0){ int i = tmp/2; //h[i] = k-j int j = k-h[i]; //h[j] = j-i if(i<j && j<k && h[i]==k-j && h[j]==j-i){ ans++; } } } } } return ans; } /*std::vector<int> construct_range(int M, int K) { vector<int> res; res.push_back(1); for (int i = 1; i < M; i ++) res.push_back(i); return res; } void run_part1() { int N; assert(1 == scanf("%d", &N)); std::vector<int> H(N); for (int i = 0; i < N; i++) assert(1 == scanf("%d", &H[i])); fclose(stdin); long long T = count_triples(H); printf("%lld\n", T); fclose(stdout); } void run_part2() { int M, K; assert(2 == scanf("%d %d", &M, &K)); fclose(stdin); std::vector<int> H = construct_range(M, K); int N = H.size(); printf("%d\n", N); for (int i = 0; i < N; i++) printf("%d%c", H[i], " \n"[i + 1 == N]); fclose(stdout); } int main() { int part; assert(1 == scanf("%d", &part)); if (part == 1) run_part1(); else if (part == 2) run_part2(); return 0; }*/

Compilation message (stderr)

/usr/bin/ld: /tmp/cchnMymV.o: in function `main':
grader.cpp:(.text.startup+0x18a): undefined reference to `construct_range(int, int)'
collect2: error: ld returned 1 exit status