每个用例首先包含2个整数n(0<n<=100000)和m(0<m<=10),其中: n为镇上的人数,m为需要找出的大富翁数, 接下来一行输入镇上n个人的财富值.
请输出乌镇前m个大富翁的财产数,财产多的排前面,如果大富翁不足m个,则全部输出,每组输出占一行.
3 1 2 5 -1 5 3 1 2 3 4 5 0 0
5 5 4 3
#include <stdio.h>
#include <string.h>
int cmp(int *a,int *b)
{
return *b-*a;
}
int main()
{
int n,m,a[100000];
while(scanf("%d%d",&n,&m)!=EOF && n*m!=0)
{
if(m>n)m=n;
for(int i=0;i<n;i++)scanf("%d",&a[i]);
qsort(a,n,4,cmp);
for(int i=0;i<m;i++)printf("%d ",a[i]);
printf("\n");
}
} #include<stdio.h>
int main()
{
int i,j,n,m,a[100001];
scanf("%d%d",&n,&m);
//1.输入
for(i=0;i<n;i++)
scanf("%d",&a[i]);
//2.找m个最大的
int num=0,max,maxindex,n1=n;//保证输出个数别超出n个
for(i=0;i<m;i++)
{
max=a[0];maxindex=0;
for(j=1;j<n;j++)
if(a[j]>max)
{
max=a[j];maxindex=j;
}
//把最大值消除循环前移
for(j=maxindex;j<n-1;j++)
a[j]=a[j+1];
n--;//数组减掉一位
num++;//表示要出输出一个数
if(num<=n1)
printf("%d ",max);
else
break;
}
return 0;
} #include <stdio.h>
#include <algorithm>
#define N 100000
using namespace std;
int buf[N];
bool cmp(int a, int b)
{
return a>b;
}
int main()
{
int n, m;
while(scanf("%d %d", &n, &m)!=EOF)
{
for(int i=0; i<n; i++) scanf("%d", &buf[i]);
sort(buf, buf+n, cmp);
if(m>n) m=n;
bool isFirst=true;
for(int i=0; i<m; i++)
{
if(isFirst) isFirst=false;
else printf(" ");
printf("%d", buf[i]);
}
printf("\n");
}
return 0;
} import java.util.Arrays; import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); int n,m; while (in.hasNext()) { n=in.nextInt(); m=in.nextInt(); if(n==0&&m==0) break; int[] arr=new int[n]; for(int i=0;i<n;i++) arr[i]=in.nextInt(); Arrays.sort(arr); int j=0; for(j=arr.length-1;j>=arr.length-m;j--) { if(j>=0) System.out.print(arr[j]+" "); } System.out.println(); } } }
#include<iostream>
#include<algorithm>
using namespace std;
int cmp(int a,int b){
return a>b;
}
int main(){
int n,m;
while(cin>>n>>m){
int* money=new int[n];
for(int i=0;i<n;i++)
cin>>money[i];
sort(money,money+n,cmp);
if(m>=n){
for(int i=0;i<n;i++)
cout<<money[i]<<' ';
}
else{
for(int i=0;i<m;i++)
cout<<money[i]<<' ';
}
cout<<endl;
}
}
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
bool compare(int a,int b){
return a>=b;
}
int main(){
int n,m;
while(cin >> n >> m && (n!=0)){//n个人,找前m个大富翁
vector<int> money(n);
for(int i=0;i<n;i++){
cin >> money[i];
}
sort(money.begin(),money.end(),compare);
for(int i=0;i<min(n,m);i++){
cout << money[i] << ' ';
}
cout << endl;
}
} #include <iostream>
#include <algorithm>
using namespace std;
bool cmp(int a,int b){
return a>b;
}
void find(int *people,int length,int m){
sort(people,people+length,cmp);
if(m>length){
for(int i=0;i<length;i++)
cout<<people[i]<<" ";
}
else{
for(int i=0;i<m;i++)
cout<<people[i]<<" ";
}
}
int main() {
int m,n;
while (cin>>n>>m) {
int person[n];
for(int i=0;i<n;i++)
cin>>person[i];
find(person,n,m);
cout<<endl;
}
} def quick_sort(a, l, r):
if l >= r:
return a
first = l
last = r
m = a[l]
while first < last:
if first < last and a[last] <= m:
last-=1
a[first] = a[last]
if first < last and a[first] >= m:
first+=1
a[last] = a[first]
a[first] = m
quick_sort(a, l, first-1)
quick_sort(a, first+1, r)
return a
if l >= r:
return a[l:r]
def bigrich(l, n,m):
res=quick_sort(l, 0, n-1)
arr=[]
for i in res:
arr.append(str(i))
res = arr
if m > n:
print(' '.join(res))
else:
print(' '.join(res[:m]))
while True:
try:
n, m = map(int, input().split())
l = list(map(int, input().split()))
bigrich(l, n, m)
except:
break #include<stdio.h>
#include<queue>
using namespace std;
int main(){
priority_queue<int> Myqueue;
int n,m;
while(scanf("%d%d",&n,&m)!=EOF){
if(n==0&&m==0) break;
for(int i=0;i<n;i++){
int tmp;
scanf("%d",&tmp);
Myqueue.push(tmp);
}
for(int i=0;i<m;i++){
if(Myqueue.size()==0) break;
printf("%d ",Myqueue.top());
Myqueue.pop();
}
printf("\n");
}
} #include <iostream>
#include <queue>
using namespace std;
int main() {
int n, m;
while (cin >> n >> m) {
priority_queue<int>myPriorityQueue;
while (n--) {
int data;
cin >> data;
myPriorityQueue.push(data);
}
while (m-- && !myPriorityQueue.empty()) {
cout << myPriorityQueue.top() << " ";
myPriorityQueue.pop();
}
cout << endl;
}
return 0;
} //采用优先队列的做法,原理就是大根堆了
#include "stdio.h"
#include "queue"
using namespace std;
int main(){
int n,m;//n为镇上人数,m为要找的大富翁数
priority_queue<int> myPQueue;
int temp;
while(scanf("%d%d",&n,&m) != EOF){
if(n==0 && m==0)
break;
for(int i=0; i<n; ++i){
scanf("%d",&temp);
myPQueue.push(temp);
}
if(n >= m){
for(int i=0; i<m; ++i){
printf("%d ",myPQueue.top());
myPQueue.pop();
}
}else{
for(int i=0; i<n; ++i){
printf("%d ",myPQueue.top());
myPQueue.pop();
}
}
printf("\n");
}
} #include <cstdio>
#include <algorithm>
using namespace std;
bool comp(int lhs, int rhs) {
return lhs > rhs; //降序排序
}
int main() {
int n, m;
while (scanf("%d %d", &n, &m) != EOF) {
int arr[n];
for(int i = 0; i < n; ++i){
scanf("%d", &arr[i]);
}
sort(arr, arr + n, comp);
if (n>m) {
for(int i = 0; i < m; ++i){
printf("%d ",arr[i]);
}
printf("\n");
}else{ //n<m
for(int i = 0; i < n; ++i){
printf("%d ",arr[i]);
}
printf("\n");
}
}
return 0;
} using namespace std;
bool cmp(int a,int b){
return a>b;
}
int main(){
int n,m;
while(cin>>n>>m){
int a[n];
for(int i=0;i<n;i++){
cin>>a[i];
}
sort(a,a+n,cmp);
if(n>m){
for(int i=0;i<m;i++){
cout<<a[i]<<" ";
}
}
else{
for(int i=0;i<n;i++){
cout<<a[i]<<" ";
}
}
cout<<endl;
}
return 0;
}
#include <iostream>
#include <cstdio>
#include <queue>
using namespace std;
int main() {
int n,m;
while(scanf("%d%d",&n,&m)!=-1){
if(n==0){
break;
}
priority_queue<int> myqueue;
for(int i=0;i<n;i++){
int temp;cin>>temp;
myqueue.push(temp);
}
for(int i=0;!myqueue.empty()&&i<m;i++){
cout<<myqueue.top()<<" ";
myqueue.pop();
}
cout<<endl;
}
} //ky123寻找大富翁
#include<algorithm>
#include<stdio.h>
using namespace std;
int main(){
int n,m;
while(scanf("%d %d",&n,&m)!=EOF){
if(n==0 && m==0)
break;
else{
int *num=(int *)malloc(sizeof(int)*n);
for(int i=0;i<n;i++){
int temp;
scanf("%d",&temp);
num[i]=temp;
}
if(m>=n){
sort(num,num+n);
for(int j=n-1;j>=0;j--)
printf("%d ",num[j]);
}
else{
sort(num,num+n);
for(int k=n-1;k>=n-m;k--)
printf("%d ",num[k]);
}
}
printf("\n");
}
} #include<iostream>
#include<cstdio>
#include<string>
#include<algorithm>
using namespace std;
const int N=100005;
bool cmp(int a,int b)
{
return a>b;
}
int main(void)
{
int n,m;
while(scanf("%d%d",&n,&m)!=EOF)
{
int a[N];
for(int i=0;i<n;i++) scanf("%d",&a[i]);
sort(a,a+n,cmp);
if(n>m)
for(int i=0;i<m;i++) printf("%d ",a[i]);
else
for(int i=0;i<n;i++) printf("%d ",a[i]);
puts("");
}
return 0;
}
样例真的坑,我以为 n=0 m=0 程序才结束。。。。。