直接stl水过。用set。做完第一个题用了一个半小时多,第二个题用了十几分钟,然后两个小时基本就没了,也没再看后边的题目。
#include <iostream>
#include <algorithm>
#include <set>
using namespace std;
const int MAXN = 200010;
int num[MAXN];
set<int> sets[4];
int main()
{
ios::sync_with_stdio(false);
int n,col,m,nm;
cin >> n;
for(int i = 1; i <= n; ++i)
cin >> num[i];
for(int i = 1; i <= n; ++i)
{
cin >> col;
sets[col].insert(num[i]);
}
for(int i = 1; i <= n; ++i)
{
cin >> col;
sets[col].insert(num[i]);
}
cin >> m;
for(int i = 0; i < m; ++i)
{
cin >> col;
if(!sets[col].empty())
{
nm = *(sets[col].begin());
cout << nm << endl;
sets[1].erase(nm);
sets[2].erase(nm);
sets[3].erase(nm);
}
else
cout << -1 << endl;
}
return 0;
}