結果
問題 | No.158 奇妙なお使い |
ユーザー |
|
提出日時 | 2020-06-11 12:26:59 |
言語 | C++17 (gcc 13.3.0 + boost 1.87.0) |
結果 |
AC
|
実行時間 | 52 ms / 5,000 ms |
コード長 | 1,160 bytes |
コンパイル時間 | 1,899 ms |
コンパイル使用メモリ | 194,096 KB |
最終ジャッジ日時 | 2025-01-11 01:10:32 |
ジャッジサーバーID (参考情報) |
judge3 / judge4 |
(要ログイン)
ファイルパターン | 結果 |
---|---|
sample | AC * 4 |
other | AC * 27 |
コンパイルメッセージ
main.cpp: In function ‘int main()’: main.cpp:11:23: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 11 | rep(i,3) scanf("%d",&a[i]); | ~~~~~^~~~~~~~~~~~ main.cpp:12:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 12 | scanf("%d",&nb); | ~~~~~^~~~~~~~~~ main.cpp:13:23: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 13 | rep(i,3) scanf("%d",&b[i]); | ~~~~~^~~~~~~~~~~~ main.cpp:14:14: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 14 | scanf("%d",&nc); | ~~~~~^~~~~~~~~~ main.cpp:15:23: warning: ignoring return value of ‘int scanf(const char*, ...)’ declared with attribute ‘warn_unused_result’ [-Wunused-result] 15 | rep(i,3) scanf("%d",&c[i]); | ~~~~~^~~~~~~~~~~~
ソースコード
#include <bits/stdc++.h> #define rep(i,n) for(int i=0;i<(n);i++) using namespace std; const int INF=1<<29; int main(){ int a[3],b[3],c[3],nb,nc; rep(i,3) scanf("%d",&a[i]); scanf("%d",&nb); rep(i,3) scanf("%d",&b[i]); scanf("%d",&nc); rep(i,3) scanf("%d",&c[i]); static int dp[11][101][10001]; rep(i,11) rep(j,101) rep(k,10001) dp[i][j][k]=-INF; dp[a[0]][a[1]][a[2]]=0; for(int total=10000;total>=0;total--){ for(int i=10;i>=0;i--) for(int j=100;j>=0;j--) { int k=total-1000*i-100*j; if(k<0 || 10000<k || dp[i][j][k]==-INF) continue; int sum,i2,j2,k2; sum=nb; i2=min(sum/1000,i); sum-=1000*i2; j2=min(sum/100,j); sum-=100*j2; k2=min(sum,k); sum-=k2; if(sum==0){ dp[i-i2+b[0]][j-j2+b[1]][k-k2+b[2]]=max(dp[i-i2+b[0]][j-j2+b[1]][k-k2+b[2]],dp[i][j][k]+1); } sum=nc; i2=min(sum/1000,i); sum-=1000*i2; j2=min(sum/100,j); sum-=100*j2; k2=min(sum,k); sum-=k2; if(sum==0){ dp[i-i2+c[0]][j-j2+c[1]][k-k2+c[2]]=max(dp[i-i2+c[0]][j-j2+c[1]][k-k2+c[2]],dp[i][j][k]+1); } } } int ans=0; rep(i,11) rep(j,101) rep(k,10001) ans=max(ans,dp[i][j][k]); printf("%d\n",ans); return 0; }