共42道题,当前是第39

Description

题目描述

在二维平面内有若干个点,每个点的视野价值定义为其左下方的点的数目,即 vali=j [xj <xi]and[yj < yi],求出每个点的视野价值并输出最具有视野价值的点的编号,如果有多个这样的点,输出其中最大的编号。

输入说明:

第一行一个正整数 n ,表示二维平面中点的个数。

接下来 n 行,每行两个数,表示编号为 i 的点的坐标。

输出说明

第一行 n 个正整数,表示编号为 i 的点的视野价值。

第二行一个正整数,表示视野价值最高的点的编号,如果有多个视野价值相同的点,则输出编号最大的那个。

样例输入

5

2 3

3 2

1 1

3 5

5 3

样例输出

1 1 0 2 2

5

请补全下面的代码。

1 	#include 
2 	using namespace std;
3	const int N = 100;
4	int x[N], y[N], f[N], n, max_f, ans;
5	int main(){
6		cin >> n;
7		for (int i = 1; i <= n; ++i) cin >> x[i] >> y[i];
8		for (int i = 1; i <= n; ++i){
9			f[i] = ___ (1) ___;
10			for (int j = 1; j <= n; ++j){
11				if (x[j] < x[i] && ___ (2)___ )
12					___ (3) ___
13			}
14			if ( ___ (4) ___){
15				max_f = f[i];
16				___ (5) ___;
17			}
18		}
19		for (int i = 1; i <= n; ++i) cout << f[i] << " ";
20		cout << endl << ans << endl;
21		return 0;
22	}

通过枚举的方式计算每个点的战斗力,并且将每个点的战斗力与全局最大值进行判断。要注意的是题目中提出了在战斗力相同的情况下选择编号大的点,所以代码中是从小到大枚举点,并在 f[i] max_f 相等时也进行答案的更新。


1. A。

2. B。

3. B。

4. B。

5. C。

Question

___ (1) ___ 处应该填()

___ (2) ___ 处应该填()

___ (3) ___ 处应该填()

___ (4) ___ 处应该填()

___ (5) ___ 处应该填()

陈伦制作 版权所无 粤ICP备16127491号-1