解题思路:
注意事项:
参考代码:
#include <iostream>
#include <algorithm>
using namespace std;
const int N = 1e5 + 5;
struct grade {
int a, b, c;
int ay, by, cy;
}g[N];
bool tmp1(grade x, grade y) {
return x.ay > y.ay;
}
bool tmp2(grade x, grade y) {
return x.by > y.by;
}
bool tmp3(grade x, grade y) {
return x.cy > y.cy;
}
int main()
{
long long n; cin >> n;
for (int i = 1; i <= n; i++) cin >> g[i].a;
for (int i = 1; i <= n; i++) cin >> g[i].b;
for (int i = 1; i <= n; i++) cin >> g[i].c;
//各国每次事件分别赢的分数
for (int i = 1; i <= n; i++)
{
g[i].ay = g[i].a - g[i].b - g[i].c;
g[i].by = g[i].b - g[i].a - g[i].c;
g[i].cy = g[i].c - g[i].a - g[i].b;
}
long long ag, bg, cg, aans, bans, cans, i;//用于做循环的条件 ag bg cg大于零才有资格累加分数
sort(g + 1, g + 1 + n, tmp1);//根据每个国家赢的分数进行排序
ag = g[1]. ay;
i = 1;//i用于做下标
aans = 0;//表示各国赢的次数
while (ag > 0 && i < n) {
i++;
ag += g[i].ay;
aans++;
}
sort(g + 1, g + 1 + n, tmp2);
bg = g[1].by;
i = 1;
bans = 0;
while (bg > 0 && i < n) {
i++;
bg += g[i].by;
bans++;
}
sort(g + 1, g + 1 + n, tmp3);
cg = g[1].cy;
i = 1;
cans = 0;
while (cg > 0 && i < n) {
i++;
cg += g[i].cy;
cans++;
}
//打印
if (ag >= 0 && bg >= 0 && cg >= 0) cout << "-1";
else cout << max(aans, max(bans, cans));
return 0;
}
0.0分
2 人评分
【蟠桃记】 (C语言代码)浏览:788 |
【明明的随机数】 (C++代码)(C++库中有qsort函数直接快排,不用码排序代码hhh)浏览:974 |
C二级辅导-求偶数和 (C语言代码)浏览:638 |
C二级辅导-同因查找 (C语言代码)浏览:562 |
C语言训练-阿姆斯特朗数 (C语言代码)浏览:850 |
C语言程序设计教程(第三版)课后习题7.3 (C语言代码)浏览:576 |
C语言程序设计教程(第三版)课后习题5.4 (C语言代码)浏览:1283 |
C语言程序设计教程(第三版)课后习题1.5 (C语言代码)浏览:536 |
wu-理财计划 (C++代码)浏览:833 |
三角形 (C++代码)记忆化搜索浏览:1223 |