結果
問題 | No.77 レンガのピラミッド |
ユーザー |
![]() |
提出日時 | 2016-02-29 00:41:09 |
言語 | C++11 (gcc 13.3.0) |
結果 |
AC
|
実行時間 | 2 ms / 5,000 ms |
コード長 | 883 bytes |
コンパイル時間 | 614 ms |
コンパイル使用メモリ | 66,908 KB |
実行使用メモリ | 6,944 KB |
最終ジャッジ日時 | 2024-09-24 12:25:52 |
合計ジャッジ時間 | 1,479 ms |
ジャッジサーバーID (参考情報) |
judge4 / judge5 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 5 |
other | AC * 20 |
ソースコード
#include <cstring>#include <iostream>#include <vector>#include <string>#include <map>#include <queue>#include <algorithm>#include <stack>int N;int A[256];int total;int diff(int h) {if( total < h * h ) return 100000;int target[256];for(int i = 0; i < h; ++i) {target[i] = i + 1;}for(int i = h; i < 2 * h - 1; ++i) {target[i] = 2 * h - i - 1;}int res = 0;for(int i = 0; i < 2 * h - 1; ++i) {res += std::max(0, (A[i] - target[i]));}for(int i = 2 * h - 1; i < 128; ++i) {res += A[i];}if( res < 0 ) res = 100000;//printf("%d : %d\n", h, res);return res;}int main() {std::cin >> N;for(int i = 0; i < N; ++i) std::cin >> A[i];for(int i = 0; i < N; ++i) total += A[i];int res = 100000;for(int i = 1; i < 120; ++i) {res = std::min(res, diff(i));}printf("%d\n", res);return 0;}