結果
問題 | No.967 引き算をして門松列(その2) |
ユーザー |
![]() |
提出日時 | 2020-01-13 21:12:06 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 40 ms / 2,000 ms |
コード長 | 1,211 bytes |
コンパイル時間 | 2,416 ms |
コンパイル使用メモリ | 192,476 KB |
最終ジャッジ日時 | 2025-01-08 17:42:35 |
ジャッジサーバーID (参考情報) |
judge2 / judge1 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 2 |
other | AC * 10 |
ソースコード
#include <bits/stdc++.h>using namespace std;#define modulo 1000000007#define mod(mod_x) ((((long long)mod_x+modulo))%modulo)#define Inf 1000000000000000000int main(){int T;cin>>T;for(int i=0;i<T;i++){long long A,B,C;long long X,Y,Z;cin>>A>>B>>C>>X>>Y>>Z;long long ans = 0;if(A==C){if(X>Z){C--;ans += Z;}else{A--;ans += X;}}if(A>C){swap(A,C);swap(X,Z);}if(A>B||C<B){}else{if(A==B){long long k = Inf;if(A>=2){k = min(k,Y);}if(A>=3){k = min(k,X + Z*(C-B+1) + min(X,Z));}if(k==Inf)A=-1;else ans += k;}else if(B==C){long long k = Inf;if(A>1){k = min(k,(B-A+1)*Y);}if(B-A>1){k = min(k,Z);}else{if(A>1)k = min(k,Z + min(X,Z));}if(k==Inf)A = -1;else ans += k;}else{long long k = Inf;if(A>1){k = min(k,(B-A+1)*Y);}if(B-A>1){k = min(k,(C-B+1)*Z);}else{if(A>1){k = min(k,(C-B+1)*Z + min(Z,X));}}if(k==Inf)A = -1;else ans += k;}}if(A<=0||B<=0||C<=0)ans = -1;cout<<ans<<endl;}return 0;}