Pagini recente » Cod sursa (job #826366) | Cod sursa (job #2979779) | Cod sursa (job #2150589) | Cod sursa (job #2098405) | Cod sursa (job #2153320)
#include<fstream>
#include<algorithm>
using namespace std;
int T,t,n,vmax,i,j;
int v[4005],ok[8005],minn[8005],maxx[8005];
int inf=2000000000;
ifstream f("euro.in");
ofstream g("euro.out");
int main()
{
f>>T;
for(t=1;t<=T;t++)
{
f>>n>>vmax;
for(i=1;i<=n;i++)
f>>v[i];
sort(v+1,v+n+1);
ok[0]=1;
minn[0]=inf;
maxx[0]=0;
for(i=1;i<=vmax;i++)
{
ok[i]=0;
minn[i]=inf;
maxx[i]=0;
}
for(i=1;i<=n;i++)
{
for(j=vmax-v[i];j>=0;j--)
{
if(ok[j]==1)
{
ok[j+v[i]]=1;
if(minn[j+v[i]]==inf)
{
minn[j+v[i]]=min(v[i],minn[j]);
maxx[j+v[i]]=max(v[i],maxx[j]);
}
else
{
if((max(maxx[j],v[i])-min(minn[j],v[i]))<(maxx[j+v[i]]-minn[j+v[i]]))
{
minn[j+v[i]]=min(minn[j],v[i]);
maxx[j+v[i]]=max(maxx[j],v[i]);
}
}
}
}
}
for(i=1;i<=vmax;i++)
if(ok[i]==0) g<<"-1 ";
else g<<maxx[i]-minn[i]<<" ";
g<<"\n";
}
f.close();
g.close();
return 0;
}