MMAXPER - Rectangles Perimeter

Tác giả: happyboy99x

Ngôn ngữ: C++

#include<cstdio>
#include<algorithm>
using namespace std;

#define N 1000
int f[N], g[N], a[N], b[N], n;
/* a[i]: chieu dai hinh chu nhat i
   b[i]: chieu rong hinh chu nhat i
   f[i]: xep hinh chu nhat thu i nam ngang
   g[i]: xep hinh chu nhat thu i dung dung
 */

int main() {
	scanf("%d", &n);
	for(int i = 0; i < n; ++i) {
		scanf("%d%d", a+i, b+i);
		if(a[i] < b[i]) swap(a[i], b[i]);
	}
	f[0] = a[0]; g[0] = b[0];
	for(int i = 1; i < n; ++i) {
		f[i] = a[i] + max(abs(b[i] - b[i-1]) + f[i-1], abs(b[i] - a[i-1]) + g[i-1]);
		g[i] = b[i] + max(abs(a[i] - b[i-1]) + f[i-1], abs(a[i] - a[i-1]) + g[i-1]);
	}
	printf("%d\n", max(f[n-1], g[n-1]));
	return 0;
}

Download