Pagini recente » Cod sursa (job #1550999) | Cod sursa (job #2607526) | Cod sursa (job #2981542) | Cod sursa (job #2605658) | Cod sursa (job #2593881)
#include <fstream>
#define inf 2000000000
using namespace std;
ifstream fin("zebughil.in");
ofstream fout("zebughil.out");
int t, i, x, n, G;
struct nr{
int g, nr;
}d[132005];
void reset(int n){
for(int i = 1; i <= n; i++){
d[i].g = 0;
d[i].nr = inf;
}
}
int main()
{
for(t = 1; t < 4; t++){
fin >> n >> G;
int stari = (1 << n) - 1;
reset(stari);
for(i = 1; i <= n; i++){
fin >> x;
d[1 << (i-1)] = {x,1};
}
for(int st = 0; st <= stari; st++)
for(i = 1 ; i <= n; i++)
if((st >> (i-1)) & 1){
int s = st - (1 << (i-1));
if(!s)
continue;
int g = d[s].g + d[1 << (i-1)].g, nr = d[s].nr;
if(g > G)
g = min(d[s].g,d[1 << (i-1)].g), nr++;
if(d[st].nr > nr){
d[st].g = g;
d[st].nr = nr;
}
else if(d[st].nr == nr && g < d[st].g)
d[st].g = g;
}
fout << d[stari].nr << '\n';
}
return 0;
}