```cpp
#include<cstdio>
#include<algorithm>
using namespace std;
const int N=5007;
int a[N],b[N],f[N/5+6][N*3+6],n;
int main(){
freopen("1282.in","r",stdin);
freopen("1282.out","w",stdout);
int i,j;
scanf("%d",&n);
for(i=1;i<=n;i++)
scanf("%d%d",&a[i],&b[i]);
for(i=0;i<=N*2;i++)
f[0][i]=N;
for(i=1,f[0][N]=0;i<=n;i++)
for(j=0;j<=N;j++){
f[i][j+N]=min(f[i-1][j+a[i]-b[i]+N],f[i-1][j+b[i]-a[i]+N]+1);
f[i][N-j]=min(f[i-1][a[i]-b[i]+N-j],f[i-1][b[i]-a[i]+N-j]+1);
}
for(i=1;i<=N;i++)
if(min(f[n][N-i],f[n][N+i])<n){
printf("%d\n",min(f[n][N-i],f[n][N+i]));
return 0;
}
printf("0\n");
return 0;
}
神奇~我样例都没过,居然还能对6个点
```
by 以墨 @ 2017-09-28 22:22:56