int main() { ll n=gI(),x,y,ans=0; for(int i=0;i<n;++i)x=gI(),y=gI(),ans+=-x+y; for(;n--;)x=gI(),y=gI(),ans+=x-y; printf("%lld\n",ans); return 0; }
float SAHer::Objective(const cv::Rect &roi) { float wg = .98, wt = 1 - wg; int blur_range = 11; cv::Point lu(std::max(0, roi.x - 2*blur_range), std::max(0, roi.y - 2*blur_range)), rd(std::min(w_, roi.x + roi.width + 2*blur_range), std::min(h_, roi.y + roi.height + 2*blur_range)); cv::Point offset1(blur_range, blur_range); if ( roi.x - blur_range < 0) { offset1.x = 0; } else if (roi.x - blur_range*2 < 0) { offset1.x = roi.x - blur_range; } if ( roi.y - blur_range < 0) { offset1.y = 0; } else if (roi.y - blur_range*2 < 0) { offset1.y = roi.y - blur_range; } cv::Rect new_roi(lu, rd); cv::Mat src_roi = src_image_(new_roi), halftone_roi = halftone_image_(new_roi); cv::Rect sub_roi = cv::Rect(offset1.x, offset1.y, std::min(roi.width + 2*blur_range, new_roi.width - offset1.x), std::min(roi.height + 2*blur_range, new_roi.height - offset1.y)); //info() << "begin" << roi.x << roi.y << roi.width << roi.height << offset1.x << offset1.y << new_roi.x << new_roi.y << new_roi.width << new_roi.height; cv::Mat ssim_map = ssim(src_roi, halftone_roi)(sub_roi); //info () << "end"; float mean_ssim = float(cv::mean(ssim_map)[0]); cv::Mat gI, gH, se; cv::GaussianBlur(src_roi, gI, cv::Size(blur_range, blur_range), 0); cv::GaussianBlur(halftone_roi, gH, cv::Size(blur_range, blur_range), 0); cv::subtract(gI(sub_roi), gH(sub_roi), se); cv::multiply(se, se, se); float gaussian_diff = float(cv::mean(se)[0]); return wg*gaussian_diff + wt*(1.f - mean_ssim); }