Submission #61441


ソースコード

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
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
#include <bits/stdc++.h>
#define rep(i,n) for(int i=0;i<(n);i++)
#define reps(i,n) for(int i=1;i<=(n);i++)
#define lol long long
#define SUM(n) ((n)+1)*(n)/2 //1〜nまでの総和を求める式
#define mp make_pair
#define fi first
#define se second
#define pu push_back
#define SYOU(x) fixed<<setprecision(x+1) //小数点桁数を指定する
#define abs(x,y) max(x,y)-min(x,y)
#define all(v) v.begin(),v.end()
#define UPDigit(a,b) (a+b-1)/b //小数点切り上げ
const int INF = 0x3f3f3f3f;
const long long LINF = 0x3f3f3f3f3f3f3f3fLL;
const int MOD=int(1e9)+7;
using namespace std;
using pii = pair<int, int>;
typedef vector<int> vit;
//最大公約数
lol gcd(lol x, lol y){
if(x < y) swap(x, y);
lol r = x % y;
while(r != 0){
x = y;
y = r;
r = x % y;
}
return y;
}
//最小公倍数
lol lcm(lol x, lol y){
lol a = x * y;
return (a / gcd(x, y));
}
signed main(void){
cin.tie(nullptr);
ios_base::sync_with_stdio(false);
int n, k;
cin >> n >> k;
set<int> ans;
int a;
queue<int> memo;
rep(i, n){
cin >> a;
for(auto x : ans){
memo.push(x + a);
}
ans.insert(a);
while(!memo.empty()){
ans.insert(memo.front());
memo.pop();
}
}
if(ans.count(k)){
cout << "OK\n";
} else {
cout << "NG\n";
}
return 0;
}

ステータス

項目 データ
問題 0064 - 足し算できる?
ユーザー名 NASSUN_ei1906
投稿日時 2020-07-29 22:03:32
言語 C++17
状態 Accepted
得点 5
ソースコード長 1377 Byte
最大実行時間 57 ms
最大メモリ使用量 624 KB

セット

セット 得点 Cases
1 ALL 5 / 5 *

テストケース

ファイル名 状態 実行時間 メモリ使用量 #
AddInput1.txt AC 57 ms 604 KB
1
AddInput2.txt AC 23 ms 428 KB
1
AddInput3.txt AC 20 ms 508 KB
1
AddInput4.txt AC 19 ms 548 KB
1
AddInput5.txt AC 25 ms 624 KB
1
AddInput6.txt AC 24 ms 456 KB
1