Pagini recente » Cod sursa (job #1381226) | Cod sursa (job #7724) | Cod sursa (job #1941219) | Cod sursa (job #541417) | Cod sursa (job #2193471)
#pragma GCC optimize("03")
#include <bits/stdc++.h>
using namespace std;
ifstream in("ghiozdan.in");
ofstream out("ghiozdan.out");
int dp[2][75100], g[20100], n, G;
bool u;
int main(){
in >> n >> G;
for(int i = 1; i <= n; i++)
in >> g[i];
for(int i = 1; i <= n; i++){
memset(dp[u], 0, sizeof dp[u]);
dp[u][g[i]] = 1;
for(int w = g[i]; w <= G; w++){
if(dp[!u][w - g[i]])
dp[u][w] = dp[!u][w - g[i]] + 1;
if(dp[!u][w] && dp[!u][w] < dp[u][w])
dp[u][w] = dp[!u][w];
}
u = !u;
}
for(int i = G; i; i--)
if(dp[!u][i]){
out << i << ' ' << dp[!u][i];
int sum = i;
int nr = i / dp[!u][i];
for(int j = 1; j < dp[!u][i]; j++)
out << '\n' << nr, sum -= nr;
out << '\n' << sum;
return 0;
}
return 0;
}