// yukicoder: No.771 しおり // 2019.8.3 bal4u #include #include #if 1 #define gc() getchar_unlocked() #else #define gc() getchar() #endif int in() { // 非負整数の入力 int n = 0, c = gc(); // while (isspace(c)) c = gc(); do n = 10 * n + (c & 0xf); while ((c = gc()) >= '0'); return n; } #define INF 0x77777777 #define MAX 19 int N; int a[MAX], b[MAX]; int dp[1<>u) & 1) for (v = 0; v < N; v++) { if ((s>>v) & 1) continue; x = dp[s][u] >= b[u]+a[v]? dp[s][u]: b[u]+a[v]; int *p = &dp[s | (1<= 0; u--) { if (ans > dp[lim][u]) ans = dp[lim][u]; } return ans; } int main() { int i, j; N = in(); for (i = 0; i < N; i++) a[i] = in(), b[i] = in()-a[i]; printf("%d\n", calc(N)); return 0; }