#include #include #include void QS(int w[], int left, int right); void swap(int w[], int i, int j); int main(void) { int l, n, i; int answer = 0; scanf("%d", &l); scanf("%d", &n); int w[n - 1]; for (i = 0; i < n; i++) { scanf("%d", &w[i]); } QS(w, 0 , n - 1); for (i = 0; i < n; i++) { l = l - w[i]; answer++; if (l < 0) { answer--; break; } } printf("%d\n", answer); return 0; } void QS(int w[], int left, int right) { int i, j; int pivot; i = left; j = right; pivot = w[(left + right) / 2]; while (1) { while (w[i] < pivot) { i++; } while (pivot < w[j]) { j--; } if (i >= j) break; swap(w, i, j); i++; j--; } if (left < i - 1) { QS(w, left, i - 1); } if (j + 1 < right) { QS(w, j + 1, right); } } void swap(int w[], int i, int j) { int temp; temp = w[i]; w[i] = w[j]; w[j] = temp; }