nwerc-2016/practice/B.py

40 line
727 B
Python

from __future__ import print_function
import sys
s, e = map(int, sys.stdin.readline().split())
es = map(int, sys.stdin)
OK = [ [0]*(s+1) for i in xrange(e+1) ]
OK[0][0] = 1
for i in xrange(e):
for j in xrange(s+1):
if OK[i][j]: OK[i+1][j] = 1
if es[i] > j: continue
if OK[i][j-es[i]]: OK[i+1][j] = 2
ns = []; i, j = e, s
while i > 0 and j >= 0:
x = OK[i][j]
if x == 2:
ns.append(i-1)
i -= 1
j -= es[i]
else:
i -= 1
# print(ns)
# import pprint; pprint.pprint(OK)
print(e+1)
k, l = 1, 3
for n in ns[:-1]:
print(k, l, es[n])
k = l; l += 1
print(k, 2, es[ns[-1]])
ns = set(ns); k = 2
for i,j in enumerate(es):
if i not in ns:
print(k, l, j)
k = l; l += 1