phanminhkhoa8a5
Rating
-
Bài tập
0
Điểm
0
Rating #
-
Điểm #
28277
Giới thiệu
include <iostream>
using namespace std;
const int N = 1e9;
int main()
{
int n,t=0,f[10001],d[10001];
cin>>n;
int a[n+1];
for (int i=1;i<=n;i++)
{
cin>>a[i];
t=t+a[i];
}
t=t/2;
//QHD
for (int i=1;i<=t;i++)
{
f[i]=N;
for (int j=1;j<=n;j++)
if (i>=a[j] && j>f[i-a[j]])
{
f[i]=j;
break;
}
}
//Truyvet
while (f[t] > n) t--;
while (t > 0)
{
d[f[t]]=1;
t=t-a[f[t]];
}
long long ans = 0;
for (int i=1;i<=n;i++)
if (d[i]==1) ans -= a[i];
for (int i=1;i<=n;i++)
if (d[i]!=1) ans += a[i];
cout<<ans;
}