描述
小凯撒喜欢玩纸牌游戏,每次他去萨格勒布都会和他的朋友们玩 21 21 21 点,这是一种很流行的纸牌游戏。
这个游戏的规则是,在纸牌点数之和小于
21
21
21 点之前可以连续抓牌,如果决定不抓牌,则喊 DOSTA
。
游戏开始时,桌面有 52 52 52 张牌 —— 13 13 13 种不同牌面的牌,每种有 4 4 4 个花色。牌面分别是 2 , 3 , … , J , Q , K , A 2,3,…,J,Q,K,A 2,3,…,J,Q,K,A。它们的点数计算规则是:牌面上的数字就是点数(比如, 9 9 9 的点数就是 9 9 9),特殊地, J , Q , K J,Q,K J,Q,K 都算 10 10 10 点, A A A 算 11 11 11 点。
凯撒认为游戏的乐趣在于,当抓了 N N N 张牌之后,如果点数之和小于或等于 21 21 21,他就要思考是否要再多抓一张。假设 X X X 是已抓牌点数之和与 21 21 21 之间相差的点数值,我们知道,如果桌面上的剩余牌中点数大于 X X X 的纸牌数量比小于等于 X X X 的纸牌数量要多,或两者一样多,那就不应该再抓牌了。
因为凯撒并不擅于计算是否需要抓牌,所以他请你帮他计算和决策。
输入描述
第一行输入一个正整数 N N N ( 1 ≤ N ≤ 52 ) (1\le N \le 52) (1≤N≤52),表示凯撒已经抓牌的张数。
接下来 N N N 行每行一个正整数,第 i i i 个正整数是他抓的第 i i i 张牌点数值。
输出描述
如果凯撒应该继续抓牌,输出 VUCI
,否则输出 DOSTA
。
用例输入 1
6
2
3
2
3
2
3
用例输出 1
DOSTA
用例输入 2
1
10
用例输出 2
VUCI
用例输入 3
2
5
6
用例输出 3
VUCI
【样例解释】
第一个样例: 已经抓的
6
6
6 张牌的总点数是
15
15
15,它与
21
21
21 的差
X
X
X 是
6
6
6。桌面上剩余牌中比
6
6
6大的牌有
32
32
32 张(分别是
4
4
4 张
A
A
A、
4
4
4 张
K
K
K、
4
4
4 张
Q
Q
Q、
4
4
4 张
J
J
J、
4
4
4 张
10
10
10、
4
4
4 张
9
9
9、
4
4
4 张
8
8
8、
4
4
4 张
7
7
7),而比
6
6
6 小的牌有
14
14
14 张(分别是
1
1
1 张
2
2
2、
1
1
1 张
3
3
3、
4
4
4 张
4
4
4、
4
4
4 张
5
5
5、
4
4
4 张
6
6
6),所以决定不再抓牌,输出 DOSTA
。
直接上代码
#include<bits/stdc++.h>
using namespace std;
int t[15] = {0, 0, 4, 4, 4, 4, 4, 4, 4, 4, 16, 4};
int main() {
int n;
cin >> n;
int tmp = 21;
for (int i = 1; i <= n; i++) {
int x;
cin >> x;
tmp -= x;
t[x]--;
}
int a = 0, b = 0;
for (int i = 2; i <= 11; i++) {
if (i > tmp) b += t[i];
if (i <= tmp) a += t[i];
}
if (b > a || a == b) cout << "DOSTA" << endl;
else cout << "VUCI" << endl;
return 0;
}