Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <algorithm>
- #include <string.h>
- using namespace std;
- #define MAXC (500*100)
- #define ABS(x) ((x)<0? -(x):(x))
- bool dp[110][MAXC+10];
- int _42;
- int m;
- int c[110];
- int sum=0;
- int main() {
- scanf("%d", &_42);
- while (_42--) {
- scanf("%d", &m);
- for (int i=0; i<m; i++)
- scanf("%d", &c[i]);
- sum=0;
- for (int i=0; i<m; i++)
- sum+=c[i];
- memset(dp,0,sizeof(dp));
- dp[0][0]=true;
- dp[0][c[0]]=true;
- for (int i=1; i<m; i++)
- for (int j=MAXC; j>=0; j--)
- if (dp[i-1][j])
- dp[i][j+c[i]]=dp[i][j]=true;
- int dif=MAXC+10;
- for (int i=0; i<=500*100; i++)
- if (dp[m-1][i])
- dif=min(dif,ABS(sum-2*i));
- printf("%d\n", dif);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement