classSolution{public:intlastStoneWeightII(vector<int>& stones){int n = stones.size();int sum =0;for(int i =0; i < n; i++) sum += stones[i];int traget = sum /2;
vector<int>dp(traget +1,0);for(int i =0; i < n; i++){for(int j = traget; j >= stones[i]; j--){
dp[j]=max(dp[j], dp[j - stones[i]]+ stones[i]);}}return sum -(dp[traget]<<1);}};