游客 Signup | Login
中文 | En

3197 - A.小学生摘苹果

    今天宿舍的小伙伴们一起散步,走着走着一个又大又香的苹果正中小学生的头顶,小学生非常气愤的向上看,发现一个苹果树,上面挂满了又大又红的苹果,小学生摸了摸自己呱呱叫的肚子。于是他找来了几颗石子想扔几颗苹果下来解馋,当然苹果的重量都不同,小学生希望利用有限的几颗石头,得到最大的重量总和

Input

输入包含多组测试数据

第一行为一个整数为n,表示小学生仅有的n颗石头

第二行为一个整数m,表示树上共有m个苹果

第三行为m个整数ai,用空格分开,表示m个苹果的重量

0=<n<=10,0<=m<=100,1=<ai<=100

Output

每组测试数据输出仅一行,表示能收集到的最大重量

Examples

Input

3
5
1 2 3 4 5
2
1
2

Output

12
2

Solution C

#include <stdio.h>
int n,m;
int ai[100];
int count()
{
  int c=0;
int i,j,t,k;
for(j=0;j<m;j++) 
    for(i=0;i<m-1-j;i++)
    if(ai[i]<ai[i+1])
    {
        t=ai[i];
        ai[i]=ai[i+1];
        ai[i+1]=t;
    }
  int cts;
  if(n>m)
    cts=m;
  else
    cts=n;
  for(k=0;k<cts;k++)
  {
    c=c+ai[k];
  }
  return c;
}
int main() {
    int i;
    while (scanf("%d",&n) != EOF) {
    	scanf("%d",&m);
        for (i=0;i<m;i++){
  			scanf("%d",&ai[i]);
        }
        printf("%d\n",count());
    }
	return 0;
}

Solution C++

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

int main()
{
	int n, k, a[101];
	while(scanf("%d",&k) != EOF)
	{
		scanf("%d",&n);
		for(int i = 0 ; i < n ; i ++)
		{
			scanf("%d",&a[i]);
		}

		sort(a,a+n);
		int ans = 0;

		for(int i = n - 1 ; i >= 0 ; i --)
		{
			if(k == 0)
				break;
			ans += a[i];
			k --;
			if(k == 0)
				break;
		}

		cout << ans << endl;
	}
	return 0;
}
Time Limit 1 second
Memory Limit 128 MB
Discuss Stats
上一题 下一题