#include #include #include #include #include using namespace std; int main() { int d=0; int n; cin >> n; vector a(n), b(n); for (int i = 0; i < n;i++)cin >> a[i] >> b[i]; { int aa = 0; int bb = 0; for (int i = 0; i < n; i++) { if (a[i] < b[i])aa += a[i]; else bb += b[i]; } d = max(aa, bb); }//貪欲法 int sumb = accumulate(b.begin(),b.end(),0); int dp[100][1000]; for (int i = 0; i <= d; i++)dp[0][i] = 0; for (int i= 0; i < n; i++) { for (int j = 0; j <= d; j++) { if (j >= a[i])dp[i + 1][j] = max(dp[i][j - a[i]] + b[i], dp[i][j]); else dp[i + 1][j] = dp[i][j]; } } int ans = d; for (int i = 0; i <= d;i++) { ans = min(ans, max(i, sumb - dp[n][i])); } cout << ans<