[BZOJ1034] [ZJOI2008] 泡泡堂BNB - 贪心

直接排个序然后田忌赛马……

#include"stdio.h"
#include"iostream"
#include"algorithm"
#include"stdlib.h"
using namespace std;
const int N=100005;
int a[N],b[N],n;
inline bool cmp(const int &a,const int &b){return a>b;}
int work(int *t,int *q){
  int tl=1,tr=n,ql=1,qr=n,ans=0;
  while(tl<=tr){
    if(t[tl]>q[ql]) ans+=2,tl++,ql++;
    else if(t[tr]>q[qr]) ans+=2,tr--,qr--;
    else { if(t[tr]==q[ql]) ans++;
          tr--,ql++; }
  }
  return ans;
}
int main(){
  cin>>n; int i,j;
  for (i=1;i<=n;i++) scanf("%d",a+i);
  for (i=1;i<=n;i++) scanf("%d",b+i);
  sort(a+1,a+n+1,cmp); sort(b+1,b+n+1,cmp);
  printf("%d %d\n",work(a,b),2*n-work(b,a));
  return 0;
}


你可能感兴趣的:([BZOJ1034] [ZJOI2008] 泡泡堂BNB - 贪心)