結果
| 問題 | 
                            No.2093 Shio Ramen
                             | 
                    
| コンテスト | |
| ユーザー | 
                             | 
                    
| 提出日時 | 2022-10-07 22:27:55 | 
| 言語 | C++14  (gcc 13.3.0 + boost 1.87.0)  | 
                    
| 結果 | 
                             
                                WA
                                 
                             
                            
                         | 
                    
| 実行時間 | - | 
| コード長 | 1,473 bytes | 
| コンパイル時間 | 1,079 ms | 
| コンパイル使用メモリ | 102,348 KB | 
| 実行使用メモリ | 6,948 KB | 
| 最終ジャッジ日時 | 2024-06-12 19:26:21 | 
| 合計ジャッジ時間 | 2,067 ms | 
| 
                            ジャッジサーバーID (参考情報)  | 
                        judge1 / judge4 | 
(要ログイン)
| ファイルパターン | 結果 | 
|---|---|
| sample | AC * 1 | 
| other | AC * 10 WA * 20 | 
ソースコード
#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
#include <cmath>
#include <tuple>
#include <bitset>
#include <map>
#include <set>
#include <queue>
#include <iomanip>
#define rep(i,n) for(i=0; i<n; ++i)
#define inc_rep(i,a,n) for(i=a; i<=n; ++i)
#define dec_rep(i,n,a) for(i=n; i>=a; --i)
#define in(a) cin >> a
#define out(a,b) cout << a << b
#define print_vec(v) for(auto it=v.begin();it!=v.end();++it)cout<<*it <<" ";cout<<endl
#define print_vec2d(v) for(int i=0;i<v.size();++i){for(int j=0;j<v[i].size();++j)cout<<v[i][j]<<" ";cout<<endl;}cout<<endl
using namespace std;
using lint = long long;
int main(void){
    int i, j;
    lint k, cnt=0, x, y;
    lint p, q, n, m;
    string s;
    in(n);in(m);
    vector<pair<lint, lint> > v(n);
    rep(i,n){
        lint a, b;
        in(a);in(b);
        v[i]=make_pair(a, b);
    }
    vector<lint> d(m+1, 0);
    rep(i, n){
        // print_vec(d);
        lint si, ai;
        tie(si, ai) = v[i];
        if(si<=m){
            vector<bool> f(m+1, false);
            if(d[si]<ai){
                d[si]=ai;
                f[si]=true;
            }
            rep(j,m+1){
                if(f[j]) continue;
                if(d[j]&&j+si<=m){
                    if(d[j+si]<d[j]+ai)
                    {d[j+si]=d[j]+ai;
                    f[j+si]=true;}
                }
            }
        }
    }
    out(*max_element(d.begin(), d.end()),endl);
    // print_vec(d);
    return 0;
}