Cod sursa(job #2193479)
| Utilizator | Data | 10 aprilie 2018 12:39:40 | |
|---|---|---|---|
| Problema | Ghiozdan | Scor | 42 |
| Compilator | cpp | Status | done |
| Runda | Arhiva de probleme | Marime | 0.52 kb |
#pragma GCC optimize("03")
#include <bits/stdc++.h>
using namespace std;
ifstream in("ghiozdan.in");
ofstream out("ghiozdan.out");
int dp[75300], g[20100], n, G;
int main(){
in >> n >> G;
for(int i = 1; i <= n; i++)
in >> g[i];
sort(g + 1, g + n + 1);
for(int i = n; i; i--){
for(int w = G; w; w--)
if(dp[w] && (!dp[w + g[i]] || dp[w] + 1 < dp[w + g[i]]))
dp[w + g[i]] = dp[w] + 1;
dp[g[i]] = 1;
}
for(int i = G; i; i--)
if(dp[i])
return out << i << ' ' << dp[i], 0;
return 0;
}
