洛谷-P2637 第一次,第二次,成交!

洛谷-P2637 第一次,第二次,成交!

原题链接:https://www.luogu.com.cn/problem/P2637


题目描述

因为奶牛们的节食运动给 FJ 余下了一大批干草无法处理,所以他准备要开一个拍卖会去出售他的干草。

他有 \(n\) 批干草(每批大约 \(100\) 捆)。他的客户有 \(m\) 个,都是和他相邻的农夫。第 iii 名农夫会告诉 FJ 他会为 FJ 的每批干草付 \(p_i\) 的钱。每个农夫都想买(也只想买)FJ 的一批草料。

为了确保农夫们不会互相嫉妒,所以 FJ 决定要以一个固定的价格出售他的草料。每一个出价比 FJ 的要价要高的农夫将会买到草料,余下的将会被拒绝购买。

请你帮助 FJ 找出能让他赚到最多的钱的最低的单批草料的售价。

输入格式

第一行:两个被空格隔开的整数,\(n\)\(m\)

第二行到第 \(m+1\) 行:第 \(i+1\) 行只包含一个整数:\(p_i\)

输出格式

共一行,包含由空格隔开的两个整数:FJ 能出的每批草料的最低价格,以及他能赚到的最多的钱。

输入输出样例

输入 #1

5 4
2
8
10
7

输出 #1

7 21

说明/提示

FJ 有 \(5\) 批草料,\(4\) 个农夫想要购买。他们出价分别为:每批草料为 \(2\)\(8\)\(10\)\(7\)

FJ 应该把价格设定为 \(7\),这样会有 \(3\) 个农夫会付钱买草料,FJ 自己会挣到 \(21\) 的钱。


对于 \(100\%\) 的数据,\(1\leq n\leq 1000\)\(1\leq m\leq 1000\)\(1\leq p_i\leq 1,000,000\)

C++代码

#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int n, m, sum, ans1, ans2=0;
    cin >> n >> m;
    int p[m];
    for (int i=0; i<m; ++i)
        cin >> p[i];
    sort(p, p+m);
    for (int i=0; i<m; ++i) {
        sum = 0;
        for (int j=0; j<m; ++j)
            if (p[j] >= p[i])
                ++sum;
        sum *= p[i];
        if (sum > ans2) {
            ans1 = p[i];
            ans2 = sum;
        }
    }
    cout << ans1 << ' ' << ans2 << endl;
    return 0;
}
posted @ 2021-01-31 12:00  yuzec  阅读(255)  评论(0编辑  收藏  举报