// you can also use includes, for example: // #include <algorithm> #include <cstdio> #include <iostream> #include <vector> #include <cstdlib> using namespace std; void HSort(vector<int>&A, int b, int e); void adjust(vector<int>& A, int b, int e); int solution( const vector<int> &A) { // write your code in C++98 int i, j, k; int len = A.size(); if(len<=2) return 0; vector<int> buf(len+1); for(i=0; i<len; ++i) { buf[i+1] = A[i]; } HSort(buf, 1, len); for(k=len; k>=3; --k) { i = k-1; j = k-2; if(buf[i]+buf[j]>buf[k]) return 1; } return 0; } void HSort(vector<int>&A, int b, int e) { int len = A.size(); int i, j; for(i=len/2; i>0; --i) adjust(A, i, e);//max heap //cout<<A[0]; while(e>b) { int a = A[e]; A[e] = A[b]; A[b] = a; --e; if(b<e) adjust(A, b, e); } } void adjust(vector<int>& A, int b, int e) { int p = A[b]; int i,j; for(i=b; i<=e; ) { j = 2*i; if(j>e) break; if(j+1<=e && A[j+1]>A[j]) j++; if(p<A[j]) { A[i] = A[j]; i = j; } else { break; } } A[i] = p; }
Codility -- Triangle
最新推荐文章于 2019-08-23 13:28:18 发布