# Зчитування вхідних даних file = open('profit.in', 'r') [m, n]=file.readline().split() m=int(m) n=int(n) a=[] a.append([0]*(n+1)) for j in range(1,m+1): a.append([0]) t=(file.readline().split()) for k in range(1,n+1): a[j].append(int(t[k-1])) file.close x=[0] for j in range(0,n): x.append(0) # створення 2-вимірного масиву, # заповненого нулями def zero2(n,m): f=[] f.append([0]*(m+1)) for j in range(1,n+1): f.append([0]) for k in range(1,m+1): f[j].append(0) return f f=zero2(n,m) q=zero2(n,m) # Заповнення f даними від банкіра 1 for j in range(0,m+1): f[1][j]=a[j][1] q[1][j]=j # Заповнення f даними від банкірів 2-n for i in range(2,n+1): for j in range(1,m+1): p=0 for k in range(0,j+1): if (f[i-1][j-k]+a[k][i]>p): p=f[i-1][j-k]+a[k][i] l=k f[i][j]=p q[i][j]=l p=f[n][m] i=n # Визначення оптимального розподілу коштів while (m!=0): x[i]=q[i][m] m=m-x[i] i-=1 # Запис відповіді file = open('profit.out', 'w') file.write(str(p)+'\n'); for i in range(1,n): file.write(str(x[i])+' ') file.write(str(x[n])+'\n') file.close()