A. System of Equations
#include <iostream>
#include <cstdio>
using namespace std;
int main()
{
int n,m,ans,t;
while(~scanf("%d%d",&n,&m))
{
t=min(n,m);ans=0;
for(int i=0;i<=t;i++)
{
for(int j=0;j<=t;j++)
{
if(i*i+j==n&&i+j*j==m) ans++;
}
}
cout<<ans<<endl;
}
return 0;
}
B.Little Elephant and Cards
#include<stdio.h>
#include<string.h>
int arr[20000005],hash[20000005],lt[10000005],rt[10000005],ak[2000];
int main()
{
int n,l,r,mid,cnt;
int i,j,k;
while(~scanf("%d",&n))
{
memset(arr,0,sizeof(arr));
memset(hash,0,sizeof(hash));
for(i = 0; i < n; i ++)
{
scanf("%d%d",<[i],&rt[i]);
j = lt[i] % 200001;
while(arr[j] && arr[j] != lt[i]) j = (j + 100001) ;
arr[j] = lt[i];
hash[j] ++;
if(lt[i] != rt[i])
{
j = rt[i] % 200001;
while(arr[j] && arr[j] != rt[i]) j = (j + 100001) ;
arr[j] = rt[i];
hash[j] ++;
}
}
mid = (n + 1)/2,k = 0;
for(i = 0;i < 200001; i ++)
if(hash[i] >= mid)
ak[k ++] = arr[i];
int max = 0;
for(i = 0; i < k; i ++)
{
cnt = 0;
for(j = 0; j < n; j ++)
{
if(lt[j] == ak[i])
cnt ++;
}
if(max < cnt) max = cnt;
}
if(k == 0)
printf("-1\n");
else
printf("%d\n",mid - max>0?mid - max:0);
}
return 0;
}