瓦莱拉是个收藏家。最近他想扩大他的收藏。 瓦莱拉认识n个古董商,他们手上都有很多件古董在卖,每件古董的价格不等。瓦莱拉和n个古董商都是朋友,他很肯定,如果他出价高于该古董商在卖的其中一个古董的价格,古董商将立即与他签合同。不幸的是,瓦莱拉手上的资金有限。帮助他确定他可以和n个卖家中的哪一个进行交易。 输入格式 n+1行,第一行包含两个以空格分隔的整数n, v(1≤n≤50;104≤v≤106),分别表示古董商的数目瓦莱拉拥有的货币数量。 接下来n行。第i行首先包含一个整数ki(1≤ki≤50),表示第i个古董商在卖的古董数量。后面有ki个用空格分隔整数si1,si2…, siki(104≤sij≤106),表示第i个古董的价格。 输出格式 第一行,输出可以和瓦莱拉交易的古董商数量。 第二行按递增顺序输出这些古董商的编号,中间用空格隔开。
时间: 2024-04-11 21:28:13 浏览: 140
根据题目描述,我们需要确定瓦莱拉可以与哪个古董商进行交易。瓦莱拉可以与一个古董商进行交易的条件是他的出价高于该古董商在卖的其中一个古董的价格。
我们可以遍历每个古董商,检查他们手上的古董价格是否有低于瓦莱拉的出价。具体做法如下:
```cpp
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
int n, v;
cin >> n >> v;
vector<vector<int>> antiques(n);
for (int i = 0; i < n; i++) {
int k;
cin >> k;
vector<int> prices(k);
for (int j = 0; j < k; j++) {
cin >> prices[j];
}
antiques[i] = prices;
}
vector<int> canTrade;
for (int i = 0; i < n; i++) {
for (int j = 0; j < antiques[i].size(); j++) {
if (v > antiques[i][j]) {
canTrade.push_back(i + 1);
break;
}
}
}
sort(canTrade.begin(), canTrade.end());
cout << canTrade.size() << endl;
for (int i = 0; i < canTrade.size(); i++) {
cout << canTrade[i] << " ";
}
return 0;
}
```
以上是一个简单的C++代码示例,可以确定瓦莱拉可以与哪个古董商进行交易。按照题目要求,输出交易的古董商数量以及编号。请注意,此代码仅为示例,具体实现可能需要根据题目要求进行调整。
阅读全文