#include #include #include int compare_int(const void *a, const void *b){ return *(int*)a - *(int*)b; } int main(void){ int i, count=0; unsigned long int block_sum = 0; int box = 0; int block_num = 0; int block[10000]={0}; char str[100000], *b; //箱の大きさ fgets(str, sizeof(str), stdin); box = atoi(str); //ブロックの数 fgets(str, sizeof(str), stdin); block_num = atoi(str); //各ブロックサイズ fgets(str, sizeof(str), stdin); b = strtok(str, " "); block[0] = atoi(b); for(i = 1; i < block_num; i++){ b = strtok(NULL, " "); block[i] = atoi(b); } //block[0] ~ block[block_num - 1] //各ブロックを昇順 qsort(block, block_num, sizeof(int), compare_int); for(i = 0; i < block_num; i++){ block_sum += block[i]; if(block_sum <= box){ count++; } else{ break; } } printf("%d\n", count); return 0; }