Thứ Ba, 8 tháng 1, 2019

UVa 11678 - Card's Exchange (actually just an array manipulation problem)

Link:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=78&page=show_problem&problem=2725
Sol:
#include <cstdio>
#include <map>
using namespace std;
int main()
{
map<int, bool> cards;
int aCards, bCards, current, aCount, bCount;
while (scanf("%d %d", &aCards, &bCards), aCards && bCards)
{
aCount = bCount = 0;
cards.clear();
for (int i = 0; i < aCards; ++i)
{
scanf("%d", &current);
if (cards.find(current) == cards.end())
{
++aCount;
cards[current] = true;
}
}
for (int i = 0; i < bCards; ++i)
{
scanf("%d", &current);
map<int, bool>::iterator iter = cards.find(current);
if (iter == cards.end())
{
cards[current] = false;
++bCount;
}
else if (iter->second)
{
iter->second = false;
--aCount;
}
}
printf("%d\n", aCount < bCount ? aCount : bCount);
}
}

Không có nhận xét nào:

Đăng nhận xét

Bài G - Educatioal Round 62

Đề bài: Bạn được cho 1 đồ thị vô hướng đặc biệt. Nó bao gồm $2n$ đỉnh được đánh số từ 1 đến 2n. Dưới đây là một số đặc tính của đồ thị: + ...