Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- int bestMask, melhorSoma, maxDur, N, comps[20];
- void processa(int mask){
- register int i, soma = 0;
- for(i = 0; i < N; i++){
- if((mask & (1<<i)) > 0)soma += comps[i];
- }
- if((soma <= maxDur) && (maxDur - soma) < (maxDur - melhorSoma)){
- bestMask = mask;
- melhorSoma = soma;
- }
- }
- void bestSet(){
- register int i;
- for(i = 0; i < (1<<N); i++){
- processa(i);
- }
- }
- main(){
- register int i;
- while(scanf("%d %d", &maxDur, &N) != EOF){
- melhorSoma = 0;
- for(i = 0; i < N; i++){
- scanf("%d", &comps[i]);
- }
- bestSet();
- for(i = 0; i < N; i++){
- if((bestMask & (1<<i)) > 0)printf("%d ", comps[i]);
- }
- printf("sum:%d\n", melhorSoma);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement