买衣服
Time Limit : 3000/1000ms (Java/Other) Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 632 Accepted Submission(s) : 51
Font: Times New Roman | Verdana | Georgia
Font Size: ← →
Problem Description
一起去买衣服吧。有n个人,m个商店,每个人喜欢两种颜色,他们一起去买衣服,但是每个商店里只有一种颜色的衣服,当一个人买到他喜欢颜色的衣服时,他会变得高兴。
选择一家商店,这n个人都要去这家商店去买衣服,你的任务是保证变得高兴的人数最多。
选择一家商店,这n个人都要去这家商店去买衣服,你的任务是保证变得高兴的人数最多。
Input
有多组测试用例。
第一行输入一个正整数n(1<=n<=10000)--去买衣服的人数,人从1-n编号。
接下来n行每行输入两个正整数a,b,表示第i个人喜欢颜色a和b(1<=a,b<=100000)。
接下来输入一个正整数m(1<=m<=10000)--有m家商店,商店从1-m编号。
接下来输入m个正整数c1,c2,......,cm(1<=cj<=100000),第j家商店衣服的颜色是cj。
保证每个人喜欢的两种颜色不一样。
第一行输入一个正整数n(1<=n<=10000)--去买衣服的人数,人从1-n编号。
接下来n行每行输入两个正整数a,b,表示第i个人喜欢颜色a和b(1<=a,b<=100000)。
接下来输入一个正整数m(1<=m<=10000)--有m家商店,商店从1-m编号。
接下来输入m个正整数c1,c2,......,cm(1<=cj<=100000),第j家商店衣服的颜色是cj。
保证每个人喜欢的两种颜色不一样。
Output
输出一个正整数,代表应该选择那家商店,使得变得高兴的人数最多。如果有多家这样的商店,那么输出编号最小的那一个。如果不存在这样的商店,则输出0。
Sample Input
2 2 4 2 5 3 4 2 5
Sample Output
2
Author
CWIND
#include<stdio.h>
int main()
{
int n = 0, m = 0, i = 0, j = 0;
long int a[110000] = { 0 }, b[110000] = { 0 }, c[110000] = { 0 }, num[11000] = { 0 };
while (scanf("%d", &n) != EOF)
{
int max = 0, count = 0;
memset(num, 0, sizeof(num));
memset(a, 0, sizeof(a));
memset(b, 0, sizeof(b));
memset(c, 0, sizeof(c));
for (i = 0;i<n;i++)
scanf("%d%d", &a[i], &b[i]);
scanf("%d", &m);
for (i = 0;i<m;i++)
scanf("%d", &c[i]);
for (i = 0;i<m;i++)
{
for (j = 0;j<n;j++)
{
if (a[j] == c[i] || b[j] == c[i])
num[i]++;
}
}
for (i = 0;i<m;i++)
{
if (num[i]>max)
{
max = num[i];
count = i + 1;
}
}
printf("%d\n", count);
}
return 0;
}