#include <bits/stdc++.h>
using namespace std;
const int MAXN = 100005;
int n, x;
string s;
struct node{
string name;
int sum;
}a[MAXN], b[MAXN];
inline int read(){
int X=0,w=0;
char ch=0;
while(!isdigit(ch))
{
w|=ch=='-';
ch=getchar();
}
while(isdigit(ch))
{
X=(X<<3)+(X<<1)+(ch^48);
ch=getchar();
}
return w?-X:X;
}
inline void write(int x){
if(x<0)x=~x+1,putchar('-');
if(x>9) write(x/10);
putchar(x%10+'0');
}
int cmp(node x, node y){
if (x.sum != y.sum)
return x.sum > y.sum;
return x.name < y.name;
}
signed main(void)
{
//freopen("input.in","r",stdin);
//freopen("output.out","w",stdout);
ios::sync_with_stdio(0);
n = read();
for (int i=1; i<=n; i++)
{
cin >> a[i].name;
b[i].name = a[i].name;
for (int j=1; j<=5; j++)
{
cin >> x;
a[i].sum += x;
}
b[i].sum = a[i].sum;
}
for (int i=1; i<=n; i++)
{
s = a[i].name;
a[i].sum += 500;
sort (a + 1, a + 1 + n, cmp);
for (int j=1; j<=n; j++)
{
if (a[j].name == s)
{
cout << j << " ";
break;
}
}
for (int j=1; j<=n; j++)
{
a[j].name = b[j].name;
a[j].sum = b[j].sum + 500;
}
a[i].sum -= 500;
sort (a + 1, a + 1 + n, cmp);
for (int j=1; j<=n; j++)
{
if (a[j].name == s)
{
cout << j << endl;
break;
}
}
for (int j=1; j<=n; j++)
{
a[j].name = b[j].name;
a[j].sum = b[j].sum;
}
}
//fclose(stdin);
//fclose(stdout);
return 0;
}
数据下载后:
1.in:
3
pavel 120 200 300 400 500
keko 150 400 300 200 100
bartol 470 120 90 93 189
1.out:
1 2
1 3
2 3
测试输出
1 2
1 3
2 3
球球大佬看看哪错了?