- #include<stdio.h>
- int main(){
- int n, i, j, max;
- int w[1005], f[1005], lis[1005];
- while(1){
- if(n == 0) break;
- for(i=0; i<n; i++){
- lis[i] = 2147483640;
- }
- lis[n] = 2147483640;
- max = 0;
- lis[0] = 0;
- for(i=n-1; i>=0; i--){
- for(j=max; j>=0; j--){
- /* printf("%d:%d %d\n", j, f[i], lis[j+1]);*/
- if(f[i] >= lis[j] && (w[i] + lis[j]) <= lis[j+1]){
- /* printf("[%d]\n", w[i] + lis[j]);*/
- lis[j+1] = w[i] + lis[j];
- if(j == max) max++;
- /*break;*/
- }
- }
- }
- }
- return 0;
- }
Raw Paste