Codility -- Triangle

来源:互联网 发布:卡卡软件下载 编辑:程序博客网 时间:2024/04/30 15:12
// 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;}


原创粉丝点击