合并果子

合并果子

#include  < iostream >
#include 
< queue >
using   namespace  std;

typedef 
struct  node
{
    
int data;
    
    friend 
bool operator <(node a , node b)
    
{
        
        
return a.data > b.data;
        
    }

    
}
Point;

int  main()
{
    
    priority_queue
<node> Q;
    
    
int n , sum;

    Point v , a , b , x;
    
    
while (scanf ("%d" , &n) != EOF)
    
{
     sum 
= 0;
        
       
while (n --)
       
{
         scanf (
"%d" , &v.data);

         Q.push(v);
       }


         
while (!Q.empty())
         
{
           
            a 
= Q.top();

            Q.pop();

            b 
= Q.top();

            Q.pop();

            x.data 
= a.data + b.data;

            sum 
+= x.data;

            
if (!Q.empty())
            
                 Q.push(x);

         }


         printf (
"%d\n" , sum);

         
while (!Q.empty())
         
{
           Q.pop();
         }


    }


    
return 23;
}

你可能感兴趣的:(合并果子)