HDU problem 3877

来源:互联网 发布:网络主播英语怎么说 编辑:程序博客网 时间:2024/06/06 18:54

Special sort

Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)
Total Submission(s): 331    Accepted Submission(s): 113


Problem Description
We all know a+b=c,but now there is a new rule in equations: 
if a>b,then it's equal to [>c];
if a=b,then it's equal to [=c];
if a<b,then it's equal to [<c];
a sample: 

1+1=[=2] 
2+0=[>2]
0+2=[<2]
1+2=[<3]

and [>c] > [=c] > [<c].
For every [n],
[n+1] > [n] >[n-1].
 

Input
The input consists of T cases.The first line of the input contains only positive integer T (0<T<=100).Then follows the cases.Each case begins with a line containing exactly one integer N (0<N<=10000).Then there are N lines, each with two integers a and b (0<a,b<2^31-1).
 

Output
For each case, calculate each value of a+b(as a+b=[?]) and output a+b=[?] in descending order sorted by [?]. If there exists some pair of a,b whose order can not be determined by the rules above, output them with the order of the input. A blank line should be printed after each case. 
 

Sample Input
251 55 13 34 55 651 66 12 44 23 3
 

Sample Output
5+6=[<11]4+5=[<9]5+1=[>6]3+3=[=6]1+5=[<6]6+1=[>7]1+6=[<7]4+2=[>6]3+3=[=6]2+4=[<6]
 

Source
2011 Multi-University Training Contest 4 - Host by SDU
 

Recommend
lcy
#include<cstdio>#include<iostream>#include<algorithm>#include<string.h>using namespace std;#define MAXN 10001#define in __int64typedef struct node{    in x,y,ans,ii,z;}no;no ct[MAXN];in cmp(no a,no b){    if(a.ans!=b.ans)        return a.ans>b.ans;    else if(a.z!=b.z)        return a.z>b.z;    else         return a.ii<b.ii;}int main(){    in t;    scanf("%I64d",&t);    in n,i;    while (t--)    {        scanf("%I64d",&n);        for(i=0;i<n;i++)        {            scanf("%I64d %I64d",&ct[i].x,&ct[i].y);            ct[i].ans=ct[i].x+ct[i].y;            if(ct[i].x>ct[i].y)                ct[i].z=3;            if(ct[i].x<ct[i].y)                ct[i].z=1;            if(ct[i].x==ct[i].y)                 ct[i].z=2;            ct[i].ii=i;        }        sort(ct,ct+n,cmp);        for(i=0;i<n;i++)        {               printf("%I64d+%I64d=[",ct[i].x,ct[i].y);            if(ct[i].z==3)                  printf(">");            if(ct[i].z==2)                    printf("=");            if(ct[i].z==1)                  printf("<");            printf("%I64d]\n",ct[i].ans);        }       printf("\n");    }    return 0;}


原创粉丝点击