Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #define max(a, b) ((a > b) ? a : b)
- #define min(a, b) ((a < b) ? a : b)
- int m[101][50001];
- int a[101];
- int main()
- {
- int tc, i, j;
- scanf("%d\n", &tc);
- while(tc--)
- {
- int n, sum = 0, maxDif = 999999999;
- scanf("%d\n", &n);
- for(i=1; i<=n; i++)
- {
- scanf("%d", &a[i]);
- sum += a[i];
- }
- for(i=0; i<sum+1; i++)
- m[0][i] = 0;
- for(i=1; i<=n; i++)
- {
- for(j=0; j<sum+1; j++)
- {
- if(a[i] <= j)
- m[i][j] = max(a[i]+m[i-1][j-a[i]], m[i-1][j]);
- else
- m[i][j] = m[i-1][j];
- maxDif = min(maxDif, abs(sum-2*m[i][j]));
- }
- }
- if(maxDif == 999999999)
- maxDif = 0;
- printf("%d\n", maxDif);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment