邪修大法也能做,真真正正的模拟
#include<iostream>
using namespace std;
signed main()
{
int n;cin>>n;
int a,b,c,d,e;
a = b = c = d = e = 0;
int up,down,l,r;
up = down = l = r = 0;
int ret = 0;
while(n--)
{
int x,y;cin>>x>>y;
if(x==0&&y==0) e++;
else if(x>0&&y>0)a++;
else if(x<0&&y>0)b++;
else if(x<0&&y<0)c++;
else if(x>0&&y<0)d++;
else if(x==0&&y>0)up++;
else if(x==0&&y<0)down++;
else if(x<0&&y==0)l++;
else if(x>0&&y==0)r++;
}
while(a&&c)
{
a--;c--;
ret+=2;
}
while(b&&d)
{
b--;d--;
ret+=2;
}
while(up&&c)
{
up--;c--;
ret+=2;
}
while(up&&d)
{
up--;d--;
ret+=2;
}
while(down&&a)
{
down--;a--;
ret+=2;
}
while(down&&b)
{
down--;b--;
ret+=2;
}
while(l&&a)
{
l--;a--;
ret+=2;
}
while(l&&d)
{
l--;d--;
ret+=2;
}
while(r&&b)
{
r--;b--;
ret+=2;
}
while(r&&c)
{
r--;c--;
ret+=2;
}
int sum = up+l+r+down;
while(sum>=2)
{
sum-=2;
ret+=2;
}
while(a&&b)
{
a--;b--;
ret++;
}
while(a&&d)
{
a--;d--;
ret++;
}
while(b&&c)
{
b--;c--;
ret++;
}
while(c&&d)
{
c--;d--;
ret++;
}
ret+=(2*e);
cout<<ret;
return 0;
}

京公网安备 11010502036488号