[ CodeVS冲杯之路 ] P1368

时间:2023-03-10 07:24:44
[ CodeVS冲杯之路 ] P1368

  不充钱,你怎么AC?

  题目:http://codevs.cn/problem/1368/

  嗯……泡泡堂,很劲啊,其实就是个盗版的田忌赛马

  http://www.cnblogs.com/hyfer/p/5853381.html

  这边博客讲得很好啊,虽然不是这道题,但是方法是完全类似的

  你把田忌赛马看懂了,泡泡堂就自然解出来了

 #include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<iostream>
#include<algorithm>
#include<ctime>
#include<queue>
#include<stack>
typedef long long LL;
typedef double db;
using namespace std; const int oo=,TL=,N=;
int a[N],b[N];
int main()
{
int i,n,la,lb,ra,rb,ans=;
scanf("%d",&n);
for (i=;i<=n;i++) scanf("%d",&a[i]);
for (i=;i<=n;i++) scanf("%d",&b[i]);
sort(a+(la=lb=),a+(ra=rb=n)+);
sort(b+,b++n);
while (la<=ra)
{
if (a[la]>b[lb])
{
ans+=;
la++;
lb++;
}
else if (a[ra]>b[rb])
{
ra--;
rb--;
ans+=;
}
else ans+=(a[la++]==b[rb--]);
}
printf("%d ",ans);
for (i=la=lb=,ans=,ra=rb=n;i<=n;i++) swap(a[i],b[i]);
while (la<=ra)
{
if (a[la]>b[lb])
{
ans+=;
la++;
lb++;
}
else if (a[ra]>b[rb])
{
ra--;
rb--;
ans+=;
}
else ans+=(a[la++]==b[rb--]);
}
printf("%d\n",*n-ans);
return ;
}