题目链接:http://codeforces.com/problemset/problem/1121/A
真·阅读理解
题意就是 有n个人 pi表示他们的强度 si表示他们来自哪个学校 现在Arkady选了K个人 如果这其中有某些人不是他们学校里最强的,你就让这个人自己去一个学校 他就是这个新学校里面最强的 那么就一定会被选上 并且他原学校的最强的也会被选上
也就是 k个人里有哪个人不是最强的就必须多一个学校呗
读题半小时代码几分钟。。
代码如下
#include <cstdio> #include <vector> #include <algorithm> using namespace std; const int maxn = 110; int p[maxn], s[maxn]; vector<int> G[maxn]; int main() { int n, m, k; scanf("%d%d%d", &n, &m, &k); for (int i = 1; i <= n; i++) { scanf("%d", &p[i]); } for (int i = 1, k; i <= n; i++) { scanf("%d", &s[i]); G[s[i]].push_back(p[i]); } int ans = 0; for (int i = 1; i <= m; i++) sort(G[i].begin(), G[i].end()); for (int i = 0, id; i < k; i++) { scanf("%d", &id); int size = G[s[id]].size(); if (p[id] != G[s[id]][size-1]) ans++; } printf("%d\n", ans); return 0; }