打卡信奥刷题(559)用C++信奥P7308[普及组/提高] [COCI2018-2019#2] Preokret

[COCI2018-2019#2] Preokret

题目描述

假如我们正在观看一场未来的球赛,比赛双方是 A 队和 B 队。我们知道两队的得分和每次得分的准确时间。在一秒内,不可能有超过一次得分。

King James 想要得到两个问题的答案:

  1. 上半场总共得了多少分?(整场比赛持续 4 × 12 4 \times 12 4×12 分钟)
  2. 发生多少次反超?(一次反超定义为一支队伍在得分小于对方后,经过投球使得得分超过对方)

输入格式

第一行输入正整数 A A A,表示 A 队的得分。

接下来的 A A A 行,每行输入正整数 A s A_s As,表示 A 队第 s s s 次得分的时间。

接下来的一行,输入正整数 B B B,表示 B 队的得分。

接下来的 B B B 行,每行输入正整数 B s B_s Bs,表示 B 队第 s s s 次得分的时间。

输出格式

输出两行,每行分别输出题目描述中对应问题的答案。

样例 #1

样例输入 #1

3
10
1400
1500
2
7
2000

样例输出 #1

3
1

样例 #2

样例输入 #2

6
15
30
35
55
60
2065
7
20
25
40
45
50
2070
2075

样例输出 #2

10
5

样例 #3

样例输入 #3

11
1402
1412
1428
1430
1441
1444
1453
1483
1485
1489
1490
9
1403
1405
1409
1435
1459
1460
1461
1487
1495

样例输出 #3

8
2

提示

样例 2 解释
比分(A:B)时间(秒)所属半场是否发生反超
1 : 0 1:0 1:0 15 15 15 1 1 1
1 : 1 1:1 1:1 20 20 20 1 1 1
1 : 2 1:2 1:2 25 25 25 1 1 1是(B)
2 : 2 2:2 2:2 30 30 30 1 1 1
3 : 2 3:2 3:2 35 35 35 1 1 1是(A)
3 : 3 3:3 3:3 40 40 40 1 1 1
3 : 4 3:4 3:4 45 45 45 1 1 1是(B)
3 : 5 3:5 3:5 50 50 50 1 1 1
4 : 5 4:5 4:5 55 55 55 1 1 1
5 : 5 5:5 5:5 60 60 60 1 1 1
6 : 5 6:5 6:5 2065 2065 2065 2 2 2是(A)
6 : 6 6:6 6:6 2070 2070 2070 2 2 2
6 : 7 6:7 6:7 2075 2075 2075 2 2 2是(B)
数据规模与约定

对于 100 % 100\% 100% 的数据, 1 ≤ A , B ≤ 2879 1 \le A,B \le 2879 1A,B2879 1 ≤ A s , B s ≤ 2880 1 \le A_s,B_s \le 2880 1As,Bs2880

评分方式

每组数据第一行计 2 2 2 分,第二行计 3 3 3 分,每组数据共 5 5 5 分。

评分需要借助 Special Judge,详见附件。

说明

本题分值按 COCI 原题设置,满分 50 50 50

题目译自 COCI2018-2019 CONTEST #2 T1 Preokret

C++实现

#include<bits/stdc++.h>
using namespace std;
long long n,m,ans=0,anss=0,ld;
int a[3000],b[3000],jsa[3000],jsb[3000];
int main(){
scanf(“%lld”,&n);
for(int i=1; i<=n; i++){
scanf(“%d”,&a[i]);
if(a[i]<=1440) ans++;
jsa[a[i]]=1;
}
scanf(“%lld”,&m);
for(int i=1; i<=m; i++){
scanf(“%d”,&b[i]);
if(b[i]<=1440) ans++;
jsb[b[i]]=1;
}
printf(“%lld\n”,ans);
for(int i=1; i<=3000; i++)
jsa[i]+=jsa[i-1],jsb[i]+=jsb[i-1];
for(int i=1; i<=3000; i++){
if(jsa[i]>jsb[i] && jsa[i-1]jsb[i-1] && ld2)
anss++;
if(jsa[i]<jsb[i] && jsa[i-1]jsb[i-1] && ld1)
anss++;
if(jsa[i]!=jsb[i])
{
if(jsa[i]>jsb[i]) ld=1;
else ld=2;
}
}
printf(“%lld”,anss);
return 0;
}

在这里插入图片描述

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值