Submission #65480
ソースコード
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | //#define _GLIBCXX_DEBUG #include<bits/stdc++.h> using namespace std; template < class A, class B> inline bool chmax(A &a, const B &b) { return b > a && (a = b, true ); } template < class A, class B> inline bool chmin(A &a, const B &b) { return b < a && (a = b, true ); } typedef long long ll; typedef vector< int > vint; typedef pair< int , int > pint; typedef vector< long long > vlong; typedef vector<string> vstring; #define vpush(a,x) a.push_back(x); #define rep(i, n) REP(i, 0, n) #define all(v) v.begin(), v.end() #define REP(i, x, n) for(int i = x; i < n; i++) const int INF = 1 << 30; const int dx[] = {1,0,-1,0,1,1,-1,-1}; const int dy[] = {0,-1,0,1,1,-1,-1,1}; #define stp(x) setprecision(x) const long double PI=3.14159265358979323846264338327950; int main(){ cin.tie(nullptr); ios::sync_with_stdio( false ); int n,k; cin>>n>>k; vector<vector< int > > dp(n+1,vector< int >(100000,0)); dp[0][50000]=1; int a; REP(i,1,n+1){ cin>>a; rep(j,100000){ chmax(dp[i][j],dp[i-1][j]); if (j+a<0 || j+a>=100000){ continue ; } chmax(dp[i][j+a],dp[i-1][j]); } } if (dp[n][k+50000]==1){ cout<< "OK\n" ; } else { cout<< "NG\n" ; } return (0); } |
ステータス
項目 | データ |
---|---|
問題 | 0064 - 足し算できる? |
ユーザー名 | ei1918 |
投稿日時 | 2021-02-01 17:42:31 |
言語 | C++17 |
状態 | Accepted |
得点 | 5 |
ソースコード長 | 1240 Byte |
最大実行時間 | 65 ms |
最大メモリ使用量 | 9048 KB |
セット
セット | 得点 | Cases | |
---|---|---|---|
1 | ALL | 5 / 5 | * |
テストケース
ファイル名 | 状態 | 実行時間 | メモリ使用量 | # |
---|---|---|---|---|
AddInput1.txt | AC | 54 ms | 3292 KB |
1
|
AddInput2.txt | AC | 26 ms | 3188 KB |
1
|
AddInput3.txt | AC | 32 ms | 7052 KB |
1
|
AddInput4.txt | AC | 65 ms | 9048 KB |
1
|
AddInput5.txt | AC | 28 ms | 8316 KB |
1
|
AddInput6.txt | AC | 21 ms | 4144 KB |
1
|