#include <algorithm>
#include <cstdint>
#include <iostream>
#include <string>
#include <tuple>
#include <vector>
using namespace std;
struct Student {
uint32_t id;
string name;
};
bool operator==(const Student& a, const Student& b) {
return tie(a.id, a.name) == tie(b.id, b.name);
}
main() {
const auto jane = Student{3, "Jane"};
const auto zippy = Student{1, "Zippy"};
const auto classA = vector<Student>{jane, zippy};
auto allStudents = vector<Student>{{5, "Rod"}, jane, {4, "Freddy"}, zippy, {2, "Bungle"}};
partition(begin(allStudents), end(allStudents), [&](const auto& s){ return find(begin(classA), end(classA), s) == end(classA); });
for (const auto& s : allStudents) cout << s.id << ", " << s.name << "; ";
cout << endl;
}
I2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGNzdGRpbnQ+CiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHR1cGxlPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCnN0cnVjdCBTdHVkZW50IHsKCXVpbnQzMl90IGlkOwoJc3RyaW5nIG5hbWU7Cn07Cgpib29sIG9wZXJhdG9yPT0oY29uc3QgU3R1ZGVudCYgYSwgY29uc3QgU3R1ZGVudCYgYikgewoJcmV0dXJuIHRpZShhLmlkLCBhLm5hbWUpID09IHRpZShiLmlkLCBiLm5hbWUpOwp9CgptYWluKCkgewoJY29uc3QgYXV0byBqYW5lID0gU3R1ZGVudHszLCAiSmFuZSJ9OwoJY29uc3QgYXV0byB6aXBweSA9IFN0dWRlbnR7MSwgIlppcHB5In07Cgljb25zdCBhdXRvIGNsYXNzQSA9IHZlY3RvcjxTdHVkZW50PntqYW5lLCB6aXBweX07CglhdXRvIGFsbFN0dWRlbnRzID0gdmVjdG9yPFN0dWRlbnQ+e3s1LCAiUm9kIn0sIGphbmUsIHs0LCAiRnJlZGR5In0sIHppcHB5LCB7MiwgIkJ1bmdsZSJ9fTsKCXBhcnRpdGlvbihiZWdpbihhbGxTdHVkZW50cyksIGVuZChhbGxTdHVkZW50cyksIFsmXShjb25zdCBhdXRvJiBzKXsgcmV0dXJuIGZpbmQoYmVnaW4oY2xhc3NBKSwgZW5kKGNsYXNzQSksIHMpID09IGVuZChjbGFzc0EpOyB9KTsKCWZvciAoY29uc3QgYXV0byYgcyA6IGFsbFN0dWRlbnRzKSBjb3V0IDw8IHMuaWQgPDwgIiwgIiA8PCBzLm5hbWUgPDwgIjsgIjsKCWNvdXQgPDwgZW5kbDsgCn0=