第二题
#include<iostream>
#include<vector>
#include<algorithm>
#include<string>
#include<cmath>
#include<ctime>
#include<random>
#define ll long long
#define Fori(x) for(int i=0;i<x;i++)
#define Forj(x) for(int j=0;j<x;j++)
using namespace std;

int n;
int a[111];
int b[111];
int dp[111][10011];
int main()
{
 Fori(111)
  Forj(10011)
   dp[i][j] = -100000000;
 dp[0][0] = 0;
 scanf("%d",&n);
 Fori(n)
  scanf("%d",&a[i]);
 Fori(n)
  scanf("%d",&b[i]);
 for(int i=0;i<=n;i++)
 {
  for(int j=n;j>=1;j--)
  {
   for(int k=10000;k>=b[i];k--)
   {
    dp[j][k] = max(dp[j][k],dp[j-1][k-b[i]]+a[i]);
   }
  }
 }
 int sum = 0;
 int ans = 0;
 for(int i=0;i<n;i++) sum+=a[i];
 sort(b,b+n);
 int tmp = 0;
 for(int i=n-1;i>=0;i--)
 {
  tmp+=b[i];
  if(sum<=tmp)
  {
   ans = n-i;
   break;
  }
 }
 cout<<ans<<" ";
 int ans2 = 10000000;
 for(int i=sum;i<=10000;i++)
  ans2 = min(ans2,sum - dp[ans][i]);
 cout<<ans2<<endl;
 return 0;
}