题目描述
​ 在冰壶比赛中,给出一个目标点 P 以及一个规定的正整数 r,每一局由甲和乙两队轮流投冰壶各 8 次后,该局比赛结束。此时,那一方的冰壶最终离目标点最近,该方得分,另一方不得分。得分方每顶离目标点 P 距离小于或等于 r,位置较另一队所有冰壶都更接近目标点 P 的冰壶都可以得 1 分。

比赛最多进行 10 局。双方之间的某局比赛结束后,落后一方可以弃权,此时比赛 不再进行下去。已知某一局结束时,双方的每个冰壶离目标点 P 的距离以及正整数 r,请写一个程序判断两队之间每一局比赛的得分,以及总得分。

输入
​ 第 1 行一个正整数 r。

以下有若干行,表示对局,每一行 8 个正整数;

第 2 行的第 j 个数表示第 1 局比赛结束时,甲方的第 j 个冰壶距离目标点 P 的距离;

第 3 行的第 j 个数表示第 1 局比赛结束时,乙方的第 j 个冰壶距离目标点 P 的距离;

……

第 2k 行的第 j 个数表示第 k 局比赛结束时,甲方的第 j 个冰壶距离目标点 P 的距离;

第 2k+1 行的第 j 个数表示第 k 局比赛结束时,乙方的第 j 个冰壶距离目标点 P 的距离;

如果有一方中途弃权,则最后一行(偶数行)只有一个整数 −1,表示此时发生弃权情况;

比赛最多进行 10 局,若输入多于 21 行,请忽略 21 行后的所有内容。

输出
​ 输出若干行,每行两个整数,中间以一个冒号分隔,表示每一局比赛甲乙双方的比分(甲得分在前)。

最后一行有 2 个整数,中间以一个冒号分隔,表示甲乙双方比赛的最终得分(甲得分在前)。

样例输入

8
5 20 18 19 3 15 13 3
20 2 17 12 5 18 10 11
20 3 4 1 2 11 9 2
1 15 19 9 8 14 11 10
15 2 10 1 19 14 3 18
15 17 21 19 24 32 19 26
-1

样例输出

0:1
0:0
3:0
3:1

样例输入2

8
5 20 18 19 3 15 13 3
20 2 17 12 5 18 10 11
20 3 4 1 2 11 9 2
1 15 19 9 8 14 11 10
15 2 10 1 19 14 3 18
15 17 21 19 24 32 19 26
5 1 14 13 15 2 3 11
14 7 5 19 10 12 6 9
3 14 9 8 4 8 3 10
14 6 9 4 8 2 1 5
9 8 1 2 8 8 7 18
16 8 20 19 3 1 10 5
2 13 19 2 18 9 18 3
6 5 5 20 6 17 2 18
17 3 20 6 9 3 17 17
20 10 8 12 19 19 18 20
15 18 4 18 17 14 5 16
6 14 8 14 19 7 13 7
-1

样例输出2

0:1
0:0
3:0
3:0
0:2
0:0
0:0
3:0
2:0
0:0
11:3

样例说明
​ 在样例 1 和样例 2 中。

第 1 局比赛时,四方离目标点 P 的最近距离为 3,乙方离目标点 P 的最近距离为 2,乙方得分。乙比甲方的 3 更小的值只有 1 个(2 壶),因此乙方得 1 分;

第 2 局比赛时,甲方离目标点 P 的最近距离为 1,乙方离目标点 P 的最近距离为 1,双方均不得分。

第 3 局比赛时,甲方离目标点 P 的最近距离为 1,乙方离目标点 P 的最近距离为 15,甲方得分。甲比乙方的 15 小的值有 5 个 (2,10,1,14,3)。但小于或等于 r=8 的值只有 3 个(2,1,3)。因此甲得 3 分。

样例 1 只进行了 3 局,总得分是 3:1。样例 2 第 10 局比赛才有弃权,总得分为 11:3。

#include<iostream>
#include <algorithm>
using namespace std;

int m[15][2], r;
void print(int cnt) {
int ans0 = 0, ans1 = 0;
for (int i = 0; i < cnt; i++) {
cout << m[i][0] << ":" << m[i][1] << endl;
ans0 += m[i][0];
ans1 += m[i][1];
}
cout << ans0 << ":" << ans1 << endl;
}

int main(){
cin >> r;
for (int i = 0; i < 10; i++) {
int num0[10], num1[10];
for (int j = 0; j < 8; j++) {
cin >> num0[j];
if (num0[j] == -1) {
print(i);
return 0;
}
}
for (int j = 0; j < 8; j++) {
cin >> num1[j];
}
sort(num0, num0 + 8);
sort(num1, num1 + 8);
if (num0[0] < num1[0]) {
for (int j = 0; j < 8 && num0[j] < num1[0] && num0[j] <= r; j++) {
m[i][0]++;
}
} else {
for (int j = 0; j < 8 && num1[j] < num0[0] && num1[j] <= r; j++) {
m[i][1]++;
}
}
}
print(10);
return 0;
}