1 /* 2 贪心水题 3 */ 4 #include <cstdio> 5 #include <algorithm> 6 #include <iostream> 7 #include <cmath> 8 #include <cstring> 9 #include <vector> 10 #include <set> 11 #include <map> 12 #include <string> 13 using namespace std; 14 15 const int MAXN = 1e2 + 10; 16 const int INF = 0x3f3f3f3f; 17 struct NODE 18 { 19 int num, id; 20 }node[MAXN]; 21 22 bool cmp(NODE a, NODE b) 23 { 24 return a.num < b.num; 25 } 26 27 void work(int n, int k) 28 { 29 int x = 1; int sum = 0; 30 for (int i=1; i<=n; ++i) 31 { 32 sum += node[i].num; x = i; 33 if (sum > k) 34 { 35 x -= 1; break; 36 } 37 } 38 39 printf ("%d\n", x); 40 for (int i=1; i<=x; ++i) 41 { 42 printf ("%d%c", node[i].id, (i==x) ? '\n' : ' '); 43 } 44 45 } 46 47 int main(void) 48 { 49 #ifndef ONLINE_JUDGE 50 freopen ("A.in", "r", stdin); 51 #endif 52 53 int n, k; 54 while (~scanf ("%d%d", &n, &k)) 55 { 56 for (int i=1; i<=n; ++i) 57 { 58 scanf ("%d", &node[i].num); 59 node[i].id = i; 60 } 61 62 sort (node+1, node+1+n, cmp); 63 64 work (n, k); 65 } 66 67 68 return 0; 69 }