#include <iostream>
#include <vector>
#include <algorithm>
#include <random>
#include <cstdint>
typedef std::vector<std::uint64_t> DType;
bool ShowVector(const DType &D) {
for (auto& o : D) {
std::cout << o << ' ';
}
std::cout << std::endl;
return true;
}
DType MakeVector(const std::size_t& N,std::uint32_t S) {
//std::random_device rd;
std::mt19937 mt(S);
std::uniform_int_distribution<std::uint16_t> ui(0, 8);
DType D;
for (std::size_t i = 0; i < N; i++)D.push_back(ui(mt));
return D;
}
std::size_t CaseA(const DType& D) {//最初これを考えた。
DType C = D;
std::sort(C.begin(), C.end());
auto it = std::unique(C.begin(), C.end());
C.erase(it, C.end());
ShowVector(C);
return D.size()-C.size();
}
std::size_t CaseB(const DType& D) {//つぎこれを考えた。
DType C = D;
std::sort(C.begin(), C.end());
ShowVector(C);
return D.size()-C.size();
}
int main() {
DType D = MakeVector(16,0);
std::size_t C = 0;
std::cout << "First!:";
ShowVector(D);
std::cout << "CaseA:";
C = CaseA(D);
std::cout << '@' << C << std::endl;
std::cout << "CaseB:";
C = CaseB(D);
std::cout << '@' << C << std::endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8YWxnb3JpdGhtPgojaW5jbHVkZSA8cmFuZG9tPgojaW5jbHVkZSA8Y3N0ZGludD4KCgp0eXBlZGVmIHN0ZDo6dmVjdG9yPHN0ZDo6dWludDY0X3Q+IERUeXBlOwoKYm9vbCBTaG93VmVjdG9yKGNvbnN0IERUeXBlICZEKSB7Cglmb3IgKGF1dG8mIG8gOiBEKSB7CgkJc3RkOjpjb3V0IDw8IG8gPDwgJyAnOwoJfQoKCXN0ZDo6Y291dCA8PCBzdGQ6OmVuZGw7CgoJcmV0dXJuIHRydWU7Cn0KCkRUeXBlIE1ha2VWZWN0b3IoY29uc3Qgc3RkOjpzaXplX3QmIE4sc3RkOjp1aW50MzJfdCBTKSB7CgkvL3N0ZDo6cmFuZG9tX2RldmljZSByZDsKCXN0ZDo6bXQxOTkzNyBtdChTKTsKCXN0ZDo6dW5pZm9ybV9pbnRfZGlzdHJpYnV0aW9uPHN0ZDo6dWludDE2X3Q+IHVpKDAsIDgpOwoJRFR5cGUgRDsKCglmb3IgKHN0ZDo6c2l6ZV90IGkgPSAwOyBpIDwgTjsgaSsrKUQucHVzaF9iYWNrKHVpKG10KSk7CgoJcmV0dXJuIEQ7Cn0KCnN0ZDo6c2l6ZV90IENhc2VBKGNvbnN0IERUeXBlJiBEKSB7Ly/mnIDliJ3jgZPjgozjgpLogIPjgYjjgZ/jgIIKCURUeXBlIEMgPSBEOwoKCXN0ZDo6c29ydChDLmJlZ2luKCksIEMuZW5kKCkpOwoJYXV0byBpdCA9IHN0ZDo6dW5pcXVlKEMuYmVnaW4oKSwgQy5lbmQoKSk7CglDLmVyYXNlKGl0LCBDLmVuZCgpKTsKCVNob3dWZWN0b3IoQyk7CglyZXR1cm4gRC5zaXplKCktQy5zaXplKCk7Cn0KCnN0ZDo6c2l6ZV90IENhc2VCKGNvbnN0IERUeXBlJiBEKSB7Ly/jgaTjgY7jgZPjgozjgpLogIPjgYjjgZ/jgIIKCURUeXBlIEMgPSBEOwoKCXN0ZDo6c29ydChDLmJlZ2luKCksIEMuZW5kKCkpOwoJU2hvd1ZlY3RvcihDKTsKCXJldHVybiBELnNpemUoKS1DLnNpemUoKTsKfQoKCmludCBtYWluKCkgewoJRFR5cGUgRCA9IE1ha2VWZWN0b3IoMTYsMCk7CglzdGQ6OnNpemVfdCBDID0gMDsKCglzdGQ6OmNvdXQgPDwgIkZpcnN0IToiOwoJU2hvd1ZlY3RvcihEKTsKCQoJc3RkOjpjb3V0IDw8ICJDYXNlQToiOwoJQyA9IENhc2VBKEQpOwoJc3RkOjpjb3V0IDw8ICdAJyA8PCBDIDw8IHN0ZDo6ZW5kbDsKCglzdGQ6OmNvdXQgPDwgIkNhc2VCOiI7CglDID0gQ2FzZUIoRCk7CglzdGQ6OmNvdXQgPDwgJ0AnIDw8IEMgPDwgc3RkOjplbmRsOwoKCXJldHVybiAwOwp9