USACO 3.1 Stamps

TASK: stamps
LANG: C++

Compiling...
Compile: OK

Executing...
   Test 1: TEST OK [0.000 secs, 10844 KB]
   Test 2: TEST OK [0.000 secs, 10844 KB]
   Test 3: TEST OK [0.000 secs, 10844 KB]
   Test 4: TEST OK [0.000 secs, 10844 KB]
   Test 5: TEST OK [0.000 secs, 10844 KB]
   Test 6: TEST OK [0.000 secs, 10844 KB]
   Test 7: TEST OK [0.000 secs, 10844 KB]
   Test 8: TEST OK [0.000 secs, 10844 KB]
   Test 9: TEST OK [0.000 secs, 10844 KB]
   Test 10: TEST OK [0.054 secs, 10844 KB]
   Test 11: TEST OK [0.378 secs, 10844 KB]
   Test 12: TEST OK [0.108 secs, 10844 KB]
   Test 13: TEST OK [0.000 secs, 10844 KB]

All tests OK.
1 /*
2 PROG: stamps
3 ID: jiafeim1
4 LANG: C++
5 */
6 #include <algorithm>
7 #include <iostream>
8 #include <fstream>
9 #include <string>
10
11 using namespace std;
12 int k,n;
13 #define minN(x,y) ((x)<(y)?(x):(y))
14 int value[55];
15 int top = 0;
16 int res[2000005];
17 int main()
18 {
19 std::ifstream fin("stamps.in");
20 std::ofstream fout("stamps.out");
21
22 fin>>k>>n;
23
24 for(int i = 0;i!=n;++i)
25 fin>>value[top++];
26 sort(value,value+top);
27 long cur = 1;
28 res[0] = 0;
29 for(;;++cur)
30 {
31 res[cur] = 9999;
32 for(int i = 0;i!=n;++i)
33 {
34 if(value[i]>cur) break;
35 res[cur]=minN(res[cur],res[cur-value[i]]+1);
36 }
37 if(res[cur] > k) break;
38 }
39 fout<<cur-1<<endl;
40
41
42 fin.close();
43 fout.close();
44 return 0;
45 }
posted @ 2011-05-12 23:05  幻魇  阅读(187)  评论(0编辑  收藏  举报