結果
| 問題 | No.3681 心の沸騰石 |
| コンテスト | |
| ユーザー |
shira111
|
| 提出日時 | 2026-09-05 14:02:04 |
| 言語 | C++23(gcc16) (gcc 16.1.0 + boost 1.92.0) |
| 結果 |
AC
|
| 実行時間 | 1 ms / 2,000 ms |
| + 531µs | |
| コード長 | 1,322 bytes |
| 記録 | |
| コンパイル時間 | 2,998 ms |
| コンパイル使用メモリ | 351,556 KB |
| 実行使用メモリ | 9,788 KB |
| 最終ジャッジ日時 | 2026-09-05 14:02:36 |
| 合計ジャッジ時間 | 4,524 ms |
|
ジャッジサーバーID (参考情報) |
judge4_0 / judge2_0 |
(要ログイン)
| ファイルパターン | 結果 |
|---|---|
| sample | AC * 4 |
| other | AC * 13 |
ソースコード
#include <bits/stdc++.h>
#define rep(i,n) for (int i=0; i < (int)(n); i++)
#define all(c) c.begin(), c.end()
using namespace std;
typedef long long ll; typedef long double ld;
using vi = vector<int>; using vvi = vector<vi>;
using vl = vector<ll>; using vvl = vector<vl>;
int main() {
ios::sync_with_stdio(0); cin.tie(0); //入出力高速化
//超絶場合分け
ll R,P,Q; cin>>R>>P>>Q;
ll A,B,C,D; cin>>A>>B>>C>>D;
//A>=B>=C に並び替え
if(B<C) swap(B,C);
if(A<B) swap(A,B);
if(B<C) swap(B,C);
ll ans = 0;
auto print = [&](int proc) { cerr<<"process"<<proc<<" : "<<A<<' '<<B<<' '<<C<<" , "<<R<<" > "<<ans<<endl; };
print(0);
while(true) {
if(A == 0) {
ll cost = P + Q*3;
ll num = min(R/cost, D/3);
ans += num;
D -= num*3;
print(1);
break;
}
else if(B == 0) {
ll cost = P + Q*2;
ll num = min(R/cost, min(A, D/2));
if(num == 0) break;
ans += num;
A -= num;
D -= num*2;
R -= cost * num;
print(2);
}
else if(C == 0) {
ll cost = P + Q;
ll num = min(R/cost, min(B, D));
if(num == 0) break;
ans += num;
A -= num;
B -= num;
D -= num;
R -= cost * num;
print(3);
}
if(C >= 1) {
ll num = min(C, R/P);
if(num == 0) break;
ans += num;
A -= num;
B -= num;
C -= num;
R -= P * num;
print(4);
}
}
cout<<ans<<endl;
}
shira111