》》》点我查看「视频」详解》》》
[语言月赛 202412] 题目名没活了
题目描述
在 XCPC 竞赛里,会有若干道题目,一支队伍可以对每道题目提交若干次。我们称一支队伍对一道题目的一次提交是有效的,当且仅当:
- 在本次提交以前,还未通过该题目。
- 本次提交的题目在比赛里最终被该队伍通过了。
注意,事实上,在通过一道题目后,一支队伍仍然可以提交该题目。这样的提交是无效提交,同时,无论这样的提交是否通过,都不会影响该队伍已通过该题目的状态。
现在,给出本场比赛的一支队伍的所有提交记录,共有 n n n 条,每条是一个二元组 ( p i d i , s t a t e i ) (pid_i, state_i) (pidi,statei),其中 p i d i pid_i pidi 表示这条记录所提交的题目编号, s t a t e i state_i statei 表示这条记录的状态是未通过/通过。
我们想知道,这支队伍共通过了多少道不同的题目。注意这支队伍可能多次通过相同的题目。
输入格式
第一行是两个整数,表示记录条数
n
n
n 和以及题目的数量
p
p
p。
接下来
n
n
n 行,每行两个整数
p
i
d
i
,
s
t
a
t
e
i
pid_i, state_i
pidi,statei,表示一次提交记录。其中
s
t
a
t
e
i
=
0
state_i=0
statei=0 表示本次提交未通过,
s
t
a
t
e
i
=
1
state_i = 1
statei=1 表示本次提交已通过。
输出格式
输出一行一个整数,表示这支队伍最后通过了多少道不同的题目。
样例 #1
样例输入 #1
5 5
1 0
4 1
5 1
2 1
4 0
样例输出 #1
3
提示
样例 1 解释
这支队伍通过了 2 , 4 , 5 2,4,5 2,4,5 三道题。
数据规模与约定
测试点编号 | n n n | p p p | 特殊约定 |
---|---|---|---|
1 1 1 | = 1 =1 =1 | = 1 =1 =1 | 无 |
2 , 3 2,3 2,3 | ≤ 1000 \leq 1000 ≤1000 | = 1 =1 =1 | 无 |
4 , 5 , 6 4,5,6 4,5,6 | ≤ 1000 \leq 1000 ≤1000 | ≤ 1000 \leq 1000 ≤1000 | 这支队伍只会通过每道题至多一次 |
7 , 8 7,8 7,8 | ≤ 1000 \leq 1000 ≤1000 | ≤ 1000 \leq 1000 ≤1000 | s t a t e i = 1 state_i = 1 statei=1 |
9 , 10 9,10 9,10 | ≤ 1000 \leq 1000 ≤1000 | ≤ 1000 \leq 1000 ≤1000 | 无 |
对全部的测试数据,保证 1 ≤ n ≤ 1000 1 \leq n \leq 1000 1≤n≤1000, 1 ≤ p i d i ≤ p ≤ 1000 1 \leq pid_i \leq p \leq 1000 1≤pidi≤p≤1000, 0 ≤ s t a t e i ≤ 1 0 \leq state_i \leq 1 0≤statei≤1。
AC_Code
#include <iostream>
#include <cstring>
#include <algorithm>
#include <cstdio>
using namespace std;
const int N = 1e3 + 10;
int n, m;
bool st[N];
int main()
{
cin >> m >> n;
int res = 0;
while (m -- )
{
int x, f;
cin >> x >> f;
if (f)
if (!st[x])
{
st[x] = true;
res ++;
}
}
cout << res << endl;
return 0;
}
》》》点我查看「视频」详解》》》