結果
| 問題 | No.1606 Stuffed Animals Keeper |
| コンテスト | |
| ユーザー |
|
| 提出日時 | 2026-10-07 01:56:24 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.92.0 + ACL) |
| 結果 |
AC
不安定
|
| 実行時間 | 5 ms / 3,000 ms |
| + 38µs | |
| コード長 | 1,590 bytes |
| 記録 | |
| コンパイル時間 | 2,423 ms |
| コンパイル使用メモリ | 357,540 KB |
| 実行使用メモリ | 9,904 KB |
| 最終ジャッジ日時 | 2026-10-07 01:57:41 |
| 合計ジャッジ時間 | 4,899 ms |
|
ジャッジサーバーID (参考情報) |
judge3_1 / judge2_1 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 3 |
| other | AC * 48 |
ソースコード
// Created On : 2026-10-06 22:13:09
#include <cassert>
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define returnNO {std::cout << "NO\n"; return;}
#define returnYES {std::cout << "YES\n"; return;}
#define returnAns(x) {cout << x << "\n"; return;}
template<typename T>
using MaxHeap = std::priority_queue<T, std::vector<T>, std::less<T>>;
template<typename T>
using MinHeap = std::priority_queue<T, std::vector<T>, std::greater<T>>;
const int MOD1 = 1000000007;
const int MOD2 = 998244353;
/** obs **
**/
void solve(int test_case_index) {
int n; cin >> n;
vector<int> row(n); for (int& a: row) cin >> a;
// only build carni sum
vector<pair<int, int>> arr; arr.reserve(n); // (len, 0s)
int last = -1, carni = 0;
for (int i = 0; i < n; ++i) {
if (row[i] == 2) {
if (carni) arr.push_back({i - last - 1, carni});
last = i, carni = 0;
}
else if (row[i] == 0) carni += 1;
}
if (carni) arr.push_back({n - 1 - last, carni});
int m = arr.size(), total_carni = 0;
vector<ll> ans(n + 1, INT_MAX); ans[0] = 0;
for (auto [l, c] : arr) {
for (int s = n - l; s >= 0; --s)
ans[s + l] = min(ans[s + l], ans[s] + (l - c));
total_carni += c;
}
if (ans[total_carni] >= INT_MAX) returnAns(-1)
returnAns(ans[total_carni])
}
void preComp() {
}
int main() {
std::ios::sync_with_stdio(false);
std::cin.tie(nullptr);
preComp();
int t = 1;
// std::cin >> t;
for (int i = 1; i <= t; ++i) solve(i);
return 0;
}