40 satır
727 B
Python
40 satır
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
|