結果

問題 No.914 Omiyage
ユーザー shoshoshoshoshosho
提出日時 2020-02-17 00:59:47
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 2 ms / 2,000 ms
コード長 1,161 bytes
コンパイル時間 1,714 ms
コンパイル使用メモリ 169,872 KB
実行使用メモリ 5,248 KB
最終ジャッジ日時 2024-10-06 14:46:05
合計ジャッジ時間 2,194 ms
ジャッジサーバーID
(参考情報)
judge2 / judge4
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 1 ms
5,248 KB
testcase_01 AC 2 ms
5,248 KB
testcase_02 AC 2 ms
5,248 KB
testcase_03 AC 2 ms
5,248 KB
testcase_04 AC 2 ms
5,248 KB
testcase_05 AC 1 ms
5,248 KB
testcase_06 AC 1 ms
5,248 KB
testcase_07 AC 1 ms
5,248 KB
testcase_08 AC 2 ms
5,248 KB
testcase_09 AC 2 ms
5,248 KB
testcase_10 AC 2 ms
5,248 KB
testcase_11 AC 2 ms
5,248 KB
testcase_12 AC 1 ms
5,248 KB
testcase_13 AC 2 ms
5,248 KB
testcase_14 AC 2 ms
5,248 KB
testcase_15 AC 2 ms
5,248 KB
testcase_16 AC 2 ms
5,248 KB
testcase_17 AC 2 ms
5,248 KB
testcase_18 AC 1 ms
5,248 KB
testcase_19 AC 1 ms
5,248 KB
testcase_20 AC 2 ms
5,248 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include <bits/stdc++.h>

using namespace std;
typedef long long ll;
typedef long int li;
typedef long double lb;
#define rep(i,j,n) for (ll i = j; i < (n); i++)
#define repr(i,j,n) for(ll i = j; i >= (n); i--)
#define all(x) (x).begin(),(x).end()
#define CLR(mat,f) memset(mat, f, sizeof(mat))
#define IN(a, b, x) (a<=x&&x<b)
#define out(ans) cout << ans << endl
template<class T> inline bool chmax(T& a, T b) { if (a < b) { a = b; return 1; } return 0; }
template<class T> inline bool chmin(T& a, T b) { if (a > b) { a = b; return 1; } return 0; }
typedef pair<ll,ll>P;
const ll mod=1e9+7;
const int INF = 1000000;
const double PI=3.14159265359;

int main(){

  ll n,m,k;cin>>n>>m>>k;
  ll a[n][m];rep(i,0,n)rep(j,0,m)cin>>a[i][j];

  ll minCosts=0;
  rep(i,0,n)minCosts+=a[i][0];
  if(minCosts>k){
    out(-1);
    return 0;
  }
  const int N=510;
  bool dp[n+1][N];
  rep(i,0,n+1)CLR(dp[i],false);
  dp[0][0]=true;
  rep(i,0,n){
    vector<ll>v;
    rep(j,0,m){
      repr(c,N+1,a[i][j])if(dp[i][c-a[i][j]])v.push_back(c);
    }
    for(auto y:v)dp[i+1][y]=true;
  }

  repr(j,k,0){
    if(dp[n][j]){
      out(k-j);
      return 0;
    }
  }
  return 0;
}
0