首页 > 代码库 > Bestcoder4——Happy Three Friends(二叉堆)

Bestcoder4——Happy Three Friends(二叉堆)

本文出自:http://blog.csdn.net/svitter

Happy Three Friends


Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 0    Accepted Submission(s): 0


Problem Description
Dong-hao , Grandpa Shawn , Beautful-leg Mzry are good friends. One day , they want to play a game. There are 6 numbers on the table. Firstly , Dong-hao can change the order of 6 numbers. Secondly , Grandpa Shawn take the first one and the last one , sum them up as his scores. Thirdly , Beautiful-leg Mzry take any of 3 numbers from the last 4 numbers , and sum them up as his scores. Finally , if Grandpa Shawn‘s score is larger than Beautiful-leg Mzry‘s , Granpa Shawn wins! If Grandpa Shawn‘s score is smaller than Beautiful-leg Mzry‘s , Granpa Shawn loses. If the scores are equal , there is a tie. Nowadays , it‘s really sad that Grandpa Shawn loses his love. So Dong-hao wants him to win(not even tie). You have to tell Dong-hao whether he can achieve his goal.
 
Input
There is a number T shows there are T test cases below. ( T <= 50) For each test case , there are 6 numbers Ai ( 1 <= Ai <= 100 ).
 
If Dong-hao can achieve his goal , output "Grandpa Shawn is the Winner!" If he can not , output "What a sad story!"
 
Sample Input
3 1 2 3 3 2 2 2 2 2 2 2 2 1 2 2 2 3 4
 
Sample Output
What a sad story! What a sad story! Grandpa Shawn is the Winner!
Hint
For the first test case , {3 , 1 , 2 , 2 , 2 , 3} Grandpa Shawn can take 6 at most . But Beautiful-leg Mzry can take 6 too. So there is a tie. For the second test cases , Grandpa Shawn loses. For the last one , Dong-hao can arrange the numbers as {3 , 2 , 2 , 2 , 1 , 4} , Grandpa Shawn can take 7 , but Beautiful-leg Mzry can take 6 at most. So Grandpa Shawn Wins!

AC代码:

Output
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <vector>
#include <map>
#include <algorithm>
#include <queue>
#include <cmath>

#define INF 0xffffff
#define lln long long

#ifdef ONLINE_JUDGE
#define FOI(file) 0
#define FOW(file) 0
#else
#define FOI(file) freopen(file,"r",stdin);
#define FOW(file) freopen(file,"w",stdout);
#endif

using namespace std;

struct Node
{
    int n;
    bool operator < (const Node & a) const
    {
        return n < a.n;
    }
};

int n;

int main()
{
    //FOI("input");
    //FOW("output");
    //write your programme here
    

    int i, j, k;
    int n;
    int t;
    int sum, sum2;
    Node temp;
    priority_queue <Node> q;
    scanf("%d", &t);
    while(t--)
    {
        for(i = 0; i < 6; i++)
        {
            scanf("%d", &temp.n);
            q.push(temp);
        }
        
        sum = 0;
        temp = q.top();
        sum += temp.n;
        q.pop();
        temp = q.top();
        sum += temp.n;
        q.pop();
        //cout << sum << endl;
        
        sum2 = 0;
        for(i = 0; i < 3; i++)
        {
            temp = q.top();
            sum2 += temp.n;
            q.pop();
        }
        //cout << sum2 << endl;
        
        if(sum > sum2)
            puts("Grandpa Shawn is the Winner!");
        else
            puts("What a sad story!");
    }

    return 0;
}