結果
問題 | No.5 数字のブロック |
ユーザー | yam73 |
提出日時 | 2017-05-04 16:15:28 |
言語 | C (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 3 ms / 5,000 ms |
コード長 | 1,045 bytes |
コンパイル時間 | 489 ms |
コンパイル使用メモリ | 29,952 KB |
実行使用メモリ | 5,248 KB |
最終ジャッジ日時 | 2024-11-18 11:02:03 |
合計ジャッジ時間 | 1,509 ms |
ジャッジサーバーID (参考情報) |
judge2 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
other | AC * 34 |
ソースコード
#include <stdio.h> #include <stdlib.h> #include <string.h> 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; }