题解:对于这道题,我们采用这样的策略,首先,排序是明显的,然后第一步,若己方最弱的比对方最弱的强,则两者比赛,如果不是,进行第二步,比较己方最强的和敌方最强的,若己方强则两者比赛,否则将己方最弱的与敌方最强的比赛。然后依次做下去,统计结果即为答案。
注意点:学习了sort的用法,是从0开始读入数组的,注意algorithm的拼写,最后注意判断是双等号,pas的习惯还是没有改过来……
#include <cstdio> #include <algorithm> using namespace std; int main() { int n; while(scanf("%d",&n),n!=0) { int al,ar,bl,br,ans=0; int a[1010],b[1010]; 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); bl=0; br=n-1; al=0; ar=n-1; while(al<=ar) { if (a[al]>b[bl]) {ans++;al++;bl++;} else if (a[ar]>b[br]) {ans++;ar--;br--;} else if (a[al]==b[br]) {al++; br--;} else {ans--; al++; br--;} } printf("%d ",ans*200); } return 0; }