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].
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
2 5 1 5 5 1 3 3 4 5 5 6 5 1 6 6 1 2 4 4 2 3 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
Recommend
lcy
#include<cstdio>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std;
#define MAXN 10001
#define in __int64
typedef 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;
}