1039: 寻找前M个整数(15分)
时间限制:1.000s 内存限制:64MB
题目描述
给定N个整数,请快速找出排前M位的整数。
输入格式
输入首先给出两个正整数N(N≤1e6)和M(M≤100),其中N为整数个数,M为需要找出的整数个数。接下来一行给出N个整数(所有整数均为小于等于1e18的正整数),数字间以空格分隔。
输出格式
以非递增顺序输出一行前M位的整数,数字间以空格分隔。若N≤M,则输出N个整数的非递增序列,数字间以空格分隔。
样例输入
9 4
100 110 99 105 104 111 101 102 103
样例输出
111 110 105 104
提示/说明
本题可能有一百万个数据输入,请注意算法的时间复杂度。
AC:
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
long long n;
int m;
vector<long long> v;
cin >> n >> m;
for (int i = 0; i < n; i++)
{
long long a;
cin >> a;
v.push_back(a);
}
sort(v.begin(), v.end(),greater<long long>());
for (int i = 0; i < m;i++){
cout << v[i]<<" ";
}
return 0;
}