题意就是田忌赛马,给出田忌和齐王的马的速度,赢一场得200,平了不赔不赚,输了输200,问最大能赢多少。
表面上看上去挺简单,但是关于平局的处理稍微有点麻烦,思路见码。
#include<cstdio>
#include<cstring>
#include<cmath>
#include<cstdlib>
#include<iostream>
#include<algorithm>
#include<vector>
#include<map>
#include<queue>
#include<stack>
#include<string>
#include<map>
using namespace std;
#define LL long long
const int maxn=1005;
int A[maxn],B[maxn];
int main(){
int n;
while(scanf("%d",&n)&&n){
for(int i=0;i<n;i++) scanf("%d",&A[i]);
for(int i=0;i<n;i++) scanf("%d",&B[i]);
sort(A,A+n);
sort(B,B+n);
int win=0,tag=0,i=0,j=n-1;
while(true){
int a1=A[i+tag],an=A[j],b1=B[i],bn=B[j-tag];
if(i+tag>j) break;
if(i+tag==j){
if(a1>b1) win++;
if(a1<b1) win--;
break;
}
if(a1>b1&&an>bn){
i++;j--;win+=2;
}
else if(a1>b1){i++;win++;}
else if(an>bn){j--;win++;}
else{
tag++;
if(a1<bn) win--;
}
}
printf("%d\n",win*200);
}
return 0;
}