c++基础训练plus(二)

Background

从前有个荣光的王国,小 A 是其中的国王,他认为一个国家除了法律外还要有一些约定俗成的规则,所以今天他要赐以其规则。

Description

小 A 制定了一些规则,每条规则有一个代号,代号为不超过10的9次方的非负整数。

小 A 的国家有 n 位居民,每位居民每天会且仅会遵守 1 条规则。小 A 记录了 m 天里每天每位居民遵守的规则代号。

现在小 A 想要考察代号为 k 的规则是否符合民意,具体考察方法如下:

  • 如果在某一天里,有大于等于一半的人遵守了规则 k,那么小 A 认为在这一天规则 k 是符合民意的。
  • 如果在大于等于一半的天数里,规则 k 符合民意,那么他会认为规则 k是正确的。否则,他会认为规则 k 是错误的。

如果小 A 的规则 k 是正确的,请你输出 YES,否则请你输出 NO

Input

第一行三个整数 n,m,k分别表示居民总数、记录的天数和小 A 想要考察的规则的代号。

接下来 m 行,每行 n 个整数分别表示每个人分别遵守的规则代号。

Output

一行一个字符串 YES 或 NO 表示小 A 的规则 k 是否是被视作正确的。

Sample 1

Inputcopy Outputcopy
3 2 1
1 1 2
3 1 2
YES

Sample 2

Inputcopy Outputcopy
2 2 1
1 2
2 1
YES

Sample 3

Inputcopy Outputcopy
3 2 1
9 9 8
1 9 9
NO

Hint

样例 1 解释

  • 第一天有 2 人遵守 1 号规则,大于总人数的一半,所以第一天小 A 的规则是符合民意的。
  • 第二天只有 1 人遵守,小于总人数的一半,不符合民意。

总共有 1 天符合民意,等于天数的一半,所以小 A 认为他的规则是正确的。

样例 2 解释

第一天、第二天分别有 1 个人遵守规则 1,都等于人数的一半,因此这两天小 A 的规则都符合民意,所以小 A 认为他的规则是正确的。

样例 3 解释

  • 第一天没有人遵守 1 号规则,所以第一天小 A 的规则是不符合民意的。
  • 第二天只有 1 个人遵守 1 号规则,小于总人数的一半,不符合需求。

可见,没有一天 11 号规则是符合需求的,所以小 A 认为他的规则是错误的。

数据范围

  • 对于 20%的数据,m=1。
  • 对于另外 20% 的数据,n=1。
  • 对于 100%的数据,1≤n,m≤1000,0≤k≤1e9,输入的所有数据 xx 满足 0≤x≤1e9。

代码思路

题目要求判断规则k是否正确。首先读取居民总数n,记录的天数m,考察的规则代号k。定义整型变量rule用于统计某天遵守规则k的人数,day用于统计符合民意的天数,并均初始化为0。使用两次for循环嵌套得出day的值,最后判断其是否大于等于一半的天数,输出“YES”或“NO”。

#include
int main(){
	int n,m,k,rule;
	std::cin>>n>>m>>k;
	int day=0;
	for(int i=0;i>rule;
			if(rule==k)c++;
		}
		if(c>=n*1.0/2)day++;
	}
	if(day>=m*1.0/2)std::cout<<"YES";
	else std::cout<<"NO";
	return 0;
}

你可能感兴趣的:(c++,开发语言)