1003: 磁带存储
题目描述:
设有n个程序 {1, 2, …, n} 要存放在长度为L的磁带上。程序i存放在磁带上的长度为li,(1<=i<=n)
程序存储问题要求确定这n个程序在磁带上的一个存储方案,使得能够在磁带上存储尽可能多的程序。
对于给定的n个程序存放在磁带上的长度,编程计算磁带上最多可以存储的程序数。
输入:
第一行是2个整数,分别表示文件个数n和磁带的长度L.接下来的一行中,有n个正整数,表示程序存放在磁带上的长度.
(n<1000, L<10000)
输出:
将编程计算出的最多可以存储的程序数输出
#include<iostream>
#include<algorithm>
using namespace std;
int main()
{
int n, len;
cin >> n >> len;
int *tape = new int[n];
for (int i = 0; i < n; i++)
{
cin >> tape[i];
}
sort(tape, tape + n);
int sum = 0;
int count = 0;
for (int i = 0; i < n; i++)
{
sum += tape[i];
if (sum <= len)
{
count++;
}
else break;
}
cout << count;
}