Contest Duration: ~ (local time) (140 minutes) Back to Home

Submission #3199056

Source Code Expand

Copy
```import sys
import math
import collections
import itertools
import array
import inspect

# Set max recursion limit
sys.setrecursionlimit(1000000)

# Debug output
def chkprint(*args):
names = {
id(v): k
for k, v in inspect.currentframe().f_back.f_locals.items()
}
print(', '.join(
names.get(id(arg), '???') + ' = ' + repr(arg) for arg in args))

# Binary converter
def to_bin(x):
return bin(x)[2:]

def li_input():
return [int(_) for _ in input().split()]

def gcd(n, m):
if n % m == 0:
return m
else:
return gcd(m, n % m)

def gcd_list(L):
v = L[0]

for i in range(1, len(L)):
v = gcd(v, L[i])

return v

def lcm(n, m):
return (n * m) // gcd(n, m)

def lcm_list(L):
v = L[0]

for i in range(1, len(L)):
v = lcm(v, L[i])

return v

# Width First Search (+ Distance)
def wfs_d(D, N, K):
"""
D: 隣接行列(距離付き)
N: ノード数
K: 始点ノード
"""

dfk = [-1] * (N + 1)
dfk[K] = 0

cps = [(K, 0)]
r = [False] * (N + 1)
r[K] = True
while len(cps) != 0:
n_cps = []
for cp, cd in cps:
for i, dfcp in enumerate(D[cp]):
if dfcp != -1 and not r[i]:
dfk[i] = cd + dfcp
n_cps.append((i, cd + dfcp))
r[i] = True

cps = n_cps[:]

return dfk

# Depth First Search of Tree (+Distance)
def dfs_d(v, pre, dist):
"""
v:  現在のノード
pre: １つ前のノード
dist: 現在の距離

以下は別途用意する
D: 隣接リスト(行列ではない)
D_dfs_d: dfs_d関数で用いる，始点ノードから見た距離リスト
"""

global D
global D_dfs_d

D_dfs_d[v] = dist

for next_v, d in D[v]:
if next_v != pre:
dfs_d(next_v, v, dist + d)

return

def sigma(N):
ans = 0
for i in range(1, N + 1):
ans += i
return ans

def comb(n, r):
if n - r < r: r = n - r
if r == 0: return 1
if r == 1: return n

numerator = [n - r + k + 1 for k in range(r)]
denominator = [k + 1 for k in range(r)]

for p in range(2, r + 1):
pivot = denominator[p - 1]
if pivot > 1:
offset = (n - r) % p
for k in range(p - 1, r, p):
numerator[k - offset] /= pivot
denominator[k] /= pivot

result = 1
for k in range(r):
if numerator[k] > 1:
result *= int(numerator[k])

return result

# --------------------------------------------

dp = None

def main():
N, x = li_input()
A = sorted(li_input())

ans = 0

for i, a in enumerate(A):
if x >= a:
if i != N - 1 or i == N-1 and x == a:
x -= a
ans += 1

print(ans)

main()
```

Submission Info

Submission Time 2018-09-15 21:03:56+0900 A - Candy Distribution Again Szarny C++14 (GCC 5.4.1) 0 3034 Byte CE

Compile Error

```./Main.cpp:8:3: error: invalid preprocessing directive #Set
# Set max recursion limit
^
./Main.cpp:12:3: error: invalid preprocessing directive #Debug
# Debug output
^
./Main.cpp:18:11: warning: multi-character character constant [-Wmultichar]
print(', '.join(
^
./Main.cpp:19:28: warning: multi-character character constant [-Wmultichar]
names.get(id(arg), '???') + ' = ' + repr(arg) for arg in args))
^
./Main.cpp:19:30: warning: trigraph ??' ignored, use -trigraphs to enable [-Wtrigraphs]
names.get(id(arg), '???') + ' = ' + repr(arg) for arg in args))
^
./Main.cpp:19:37: warning: multi-character character constant [-Wmultichar]
names.get(id(arg), '???') + ' = ' + repr(arg) for arg in args))
^
./Main.cpp:22:3: error: invalid preprocessing directive #Binary
# Binary converter
^
./Main.cpp:60:3: error: invalid preprocessing directive #Width
# Width First Sea...```