#include <iostream> // std::cout
#include <algorithm> // std::sort
#include <vector> // std::vector
int CountSamePositions(std::vector<int> &A, std::vector<int> &B)
{
int count = 0;
for(int i = 0; i < 3; i++)
if(A[i] == B[i])
count ++;
return count;
}
int CountSameNumbers(std::vector<int> A, std::vector<int> B)
{
std::sort(A.begin(), A.begin() + 3);
std::sort(B.begin(), B.begin() + 3);
int count = 0;
for(int i = 0, j = 0; i < 3 && j < 3;)
if(A[i] < B[j])
i ++;
else if(A[i] > B[j])
j ++;
else
count ++, i ++, j ++;
return count;
}
int main(void) {
int a = 1, b = 2, c = 3;
int d = 2, e = 4, f = 3;
std::vector<int> A, B;
A.push_back(a); A.push_back(b); A.push_back(c);
B.push_back(d); B.push_back(e); B.push_back(f);
int samepos = CountSamePositions(A, B);
int samenum = CountSameNumbers(A, B);
if(samepos == 3)
std::cout << "You won!\n";
else if(samenum > 0)
std::cout << "You guessed " << samenum << " numbers, " << samepos << " of them at right positions.\n";
else
std::cout << "You failed to guess any number. :(\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPiAgICAgLy8gc3RkOjpjb3V0CiNpbmNsdWRlIDxhbGdvcml0aG0+ICAgIC8vIHN0ZDo6c29ydAojaW5jbHVkZSA8dmVjdG9yPiAgICAgICAvLyBzdGQ6OnZlY3RvcgoKCmludCBDb3VudFNhbWVQb3NpdGlvbnMoc3RkOjp2ZWN0b3I8aW50PiAmQSwgc3RkOjp2ZWN0b3I8aW50PiAmQikKewogICAgaW50IGNvdW50ID0gMDsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCAzOyBpKyspCiAgICAgICAgaWYoQVtpXSA9PSBCW2ldKQogICAgICAgICAgICBjb3VudCArKzsKICAgICAgICAgICAgCiAgICByZXR1cm4gY291bnQ7Cn0KCmludCBDb3VudFNhbWVOdW1iZXJzKHN0ZDo6dmVjdG9yPGludD4gQSwgc3RkOjp2ZWN0b3I8aW50PiBCKQp7CiAgICBzdGQ6OnNvcnQoQS5iZWdpbigpLCBBLmJlZ2luKCkgKyAzKTsKICAgIHN0ZDo6c29ydChCLmJlZ2luKCksIEIuYmVnaW4oKSArIDMpOwoKICAgIGludCBjb3VudCA9IDA7CiAgICBmb3IoaW50IGkgPSAwLCBqID0gMDsgaSA8IDMgJiYgaiA8IDM7KQogICAgICAgIGlmKEFbaV0gPCBCW2pdKQogICAgICAgICAgICBpICsrOwogICAgICAgIGVsc2UgaWYoQVtpXSA+IEJbal0pCiAgICAgICAgICAgIGogKys7CiAgICAgICAgZWxzZQogICAgICAgICAgICBjb3VudCArKywgaSArKywgaiArKzsKICAgICAgICAgICAgCiAgICByZXR1cm4gY291bnQ7Cn0KCmludCBtYWluKHZvaWQpIHsKCWludCBhID0gMSwgYiA9IDIsIGMgPSAzOwoJaW50IGQgPSAyLCBlID0gNCwgZiA9IDM7CgkKCXN0ZDo6dmVjdG9yPGludD4gQSwgQjsKCUEucHVzaF9iYWNrKGEpOyBBLnB1c2hfYmFjayhiKTsgQS5wdXNoX2JhY2soYyk7CglCLnB1c2hfYmFjayhkKTsgQi5wdXNoX2JhY2soZSk7IEIucHVzaF9iYWNrKGYpOwoKICAgIGludCBzYW1lcG9zID0gQ291bnRTYW1lUG9zaXRpb25zKEEsIEIpOwogICAgaW50IHNhbWVudW0gPSBDb3VudFNhbWVOdW1iZXJzKEEsIEIpOwogICAgCiAgICBpZihzYW1lcG9zID09IDMpCiAgICAJc3RkOjpjb3V0IDw8ICJZb3Ugd29uIVxuIjsKCWVsc2UgaWYoc2FtZW51bSA+IDApCgkJc3RkOjpjb3V0IDw8ICJZb3UgZ3Vlc3NlZCAiIDw8IHNhbWVudW0gPDwgIiBudW1iZXJzLCAiIDw8IHNhbWVwb3MgPDwgIiBvZiB0aGVtIGF0IHJpZ2h0IHBvc2l0aW9ucy5cbiI7CgllbHNlCgkJc3RkOjpjb3V0IDw8ICJZb3UgZmFpbGVkIHRvIGd1ZXNzIGFueSBudW1iZXIuIDooXG4iOwoJcmV0dXJuIDA7Cn0K