# Bits or Brute or ...

This problem statement is the exclusive and proprietary property of TopCoder, Inc. Any unauthorized use or reproduction of this information without the prior written consent of TopCoder, Inc. is strictly prohibited. (c)2002, TopCoder, Inc. All rights reserved.

### Problem Statement

You are the project manager for your company's largest software development project. You know that the best software has the most code, but there is a limit. Use too much code and your supervisor will say there is bloated code. Given a list of the sizes of various components you could include in the software, and the maximum amount of code you are allowed to have, determine the biggest size the sofware can be (your software must be less than or equal to the maximum). For example:
```   sizes = {25,50,60,120} maximum = 130
```
Your method will return 120 since all other combinations of components either produce less code, or are greater than the 130 limit. If no software can be built return -1(see last example).

### Definition

• Class: CodeBloat
• Method: biggest
• Parameters: `tvector<int>, int `
• Returns: ` int`
• Method signature:
```  int biggest(const tvector<int>& sizes, int maximum)
```
(be sure your method is public)

### Class

class CodeBloat { public: int biggest(const tvector<int>& sizes, int maximum) { // fill in code here } };

### Notes

If no software can be built return -1

### Constraints

• sizes must contain between 1 and 20 elements inclusive

• Each element of sizes must be between 1 and 10000 inclusive

• maximum must be between 1 and 1000000 inclusive

### Examples

1. ```{25,50,60,120}
130

```
Returns: 120

This is the example from above.

2. ```{1,2,3,4,5}
15

```
Returns: 15

All of the code can be used

3. ```{20,40,45,60,60}
86

```
Returns: 85

Using 40 and 45 will produce the largest amount of code.

4. ```{89,73,20,5,5,10000,900}
995

```
Returns: 994

5. ```{122}
1

```
Returns: -1

Owen L. Astrachan