#include <iostream>
#include <vector>
#include <string>
#include <algorithm>
struct Suit {
std::string id;
int height;
int minChest, maxChest;
int minWaist, maxWaist;
int minHip, maxHip;
int shoe;
};
struct MatchResult {
Suit suit;
int matchCount;
std::string failParams;
};
bool compareResults(const MatchResult &a, const MatchResult &b) {
return a.matchCount > b.matchCount;
}
int main() {
std::vector<Suit> suits = {
{"F1", 168, 91, 96, 77, 81, 93, 99, 8},
{"F2", 178, 117, 122, 89, 96, 117, 122, 8},
{"F3", 175, 96, 102, 76, 81, 107, 112, 8},
{"F4", 175, 101, 107, 81, 89, 112, 117, 6},
{"F5", 165, 89, 91, 69, 71, 97, 101, 5},
{"S1", 168, 90, 96, 76, 81, 90, 96, 7},
{"S2", 168, 90, 96, 76, 81, 90, 96, 7},
{"M1", 178, 101, 106, 86, 91, 102, 107, 9},
{"M2", 178, 101, 107, 84, 89, 97, 101, 9},
{"M3", 173, 98, 104, 81, 86, 96, 102, 8},
{"M4", 178, 101, 106, 86, 91, 102, 107, 9},
{"M6", 173, 98, 104, 81, 86, 96, 102, 7},
{"L1", 188, 107, 112, 91, 97, 107, 112, 10},
{"L2", 188, 107, 112, 91, 97, 107, 112, 12},
{"L3", 183, 107, 112, 91, 97, 107, 112, 10}
};
int user_height, user_chest, user_waist, user_hip, user_shoe;
std::cout << "Height (cm): ";
std::cin >> user_height;
std::cout << "Chest (cm): ";
std::cin >> user_chest;
std::cout << "Waist (cm): ";
std::cin >> user_waist;
std::cout << "Hip (cm): ";
std::cin >> user_hip;
std::cout << "Shoe size (UK): ";
std::cin >> user_shoe;
std::vector<MatchResult> results;
for (const auto& suit : suits) {
bool height_ok = (user_height <= suit.height);
bool chest_ok = (user_chest >= suit.minChest && user_chest <= suit.maxChest);
bool waist_ok = (user_waist >= suit.minWaist && user_waist <= suit.maxWaist);
bool hip_ok = (user_hip >= suit.minHip && user_hip <= suit.maxHip);
bool shoe_ok = (user_shoe <= suit.shoe);
int matchCount = (height_ok ? 1 : 0) + (chest_ok ? 1 : 0) +
(waist_ok ? 1 : 0) + (hip_ok ? 1 : 0) +
(shoe_ok ? 1 : 0);
std::string fails;
if (!height_ok) { if (!fails.empty()) fails += ", "; fails += "Height"; }
if (!chest_ok) { if (!fails.empty()) fails += ", "; fails += "Chest"; }
if (!waist_ok) { if (!fails.empty()) fails += ", "; fails += "Waist"; }
if (!hip_ok) { if (!fails.empty()) fails += ", "; fails += "Hip"; }
if (!shoe_ok) { if (!fails.empty()) fails += ", "; fails += "Shoe"; }
results.push_back({suit, matchCount, fails});
}
std::vector<MatchResult> perfectMatches;
for (const auto &r : results) {
if (r.matchCount == 5)
perfectMatches.push_back(r);
}
if (!perfectMatches.empty()) {
std::cout << "\nPerfect fit:\n";
for (const auto &p : perfectMatches)
std::cout << " - " << p.suit.id << "\n";
} else {
std::cout << "\nNo perfect fit\n";
}
std::sort(results.begin(), results.end(), compareResults);
std::vector<MatchResult> bestFits;
for (const auto &r : results) {
if (r.matchCount < 5)
bestFits.push_back(r);
}
if (!bestFits.empty()) {
std::cout << "\nBest fits:\n";
int count = 0;
for (const auto &b : bestFits) {
if (count >= 3) break;
std::cout << " - " << b.suit.id;
if (!b.failParams.empty())
std::cout << " (" << b.failParams << ")";
std::cout << "\n";
count++;
}
}
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgojaW5jbHVkZSA8c3RyaW5nPgojaW5jbHVkZSA8YWxnb3JpdGhtPgoKc3RydWN0IFN1aXQgewogICAgc3RkOjpzdHJpbmcgaWQ7CiAgICBpbnQgaGVpZ2h0OwogICAgaW50IG1pbkNoZXN0LCBtYXhDaGVzdDsKICAgIGludCBtaW5XYWlzdCwgbWF4V2Fpc3Q7CiAgICBpbnQgbWluSGlwLCBtYXhIaXA7CiAgICBpbnQgc2hvZTsKfTsKCnN0cnVjdCBNYXRjaFJlc3VsdCB7CiAgICBTdWl0IHN1aXQ7CiAgICBpbnQgbWF0Y2hDb3VudDsKICAgIHN0ZDo6c3RyaW5nIGZhaWxQYXJhbXM7Cn07Cgpib29sIGNvbXBhcmVSZXN1bHRzKGNvbnN0IE1hdGNoUmVzdWx0ICZhLCBjb25zdCBNYXRjaFJlc3VsdCAmYikgewogICAgcmV0dXJuIGEubWF0Y2hDb3VudCA+IGIubWF0Y2hDb3VudDsKfQoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnZlY3RvcjxTdWl0PiBzdWl0cyA9IHsKICAgICAgICB7IkYxIiwgMTY4LCAgOTEsICA5NiwgIDc3LCAgODEsICA5MywgIDk5LCA4fSwKICAgICAgICB7IkYyIiwgMTc4LCAxMTcsIDEyMiwgIDg5LCAgOTYsIDExNywgMTIyLCA4fSwKICAgICAgICB7IkYzIiwgMTc1LCAgOTYsIDEwMiwgIDc2LCAgODEsIDEwNywgMTEyLCA4fSwKICAgICAgICB7IkY0IiwgMTc1LCAxMDEsIDEwNywgIDgxLCAgODksIDExMiwgMTE3LCA2fSwKICAgICAgICB7IkY1IiwgMTY1LCAgODksICA5MSwgIDY5LCAgNzEsICA5NywgMTAxLCA1fSwKICAgICAgICB7IlMxIiwgMTY4LCAgOTAsICA5NiwgIDc2LCAgODEsICA5MCwgIDk2LCA3fSwKICAgICAgICB7IlMyIiwgMTY4LCAgOTAsICA5NiwgIDc2LCAgODEsICA5MCwgIDk2LCA3fSwKICAgICAgICB7Ik0xIiwgMTc4LCAxMDEsIDEwNiwgIDg2LCAgOTEsIDEwMiwgMTA3LCA5fSwKICAgICAgICB7Ik0yIiwgMTc4LCAxMDEsIDEwNywgIDg0LCAgODksICA5NywgMTAxLCA5fSwKICAgICAgICB7Ik0zIiwgMTczLCAgOTgsIDEwNCwgIDgxLCAgODYsICA5NiwgMTAyLCA4fSwKICAgICAgICB7Ik00IiwgMTc4LCAxMDEsIDEwNiwgIDg2LCAgOTEsIDEwMiwgMTA3LCA5fSwKICAgICAgICB7Ik02IiwgMTczLCAgOTgsIDEwNCwgIDgxLCAgODYsICA5NiwgMTAyLCA3fSwKICAgICAgICB7IkwxIiwgMTg4LCAxMDcsIDExMiwgIDkxLCAgOTcsIDEwNywgMTEyLCAxMH0sCiAgICAgICAgeyJMMiIsIDE4OCwgMTA3LCAxMTIsICA5MSwgIDk3LCAxMDcsIDExMiwgMTJ9LAogICAgICAgIHsiTDMiLCAxODMsIDEwNywgMTEyLCAgOTEsICA5NywgMTA3LCAxMTIsIDEwfQogICAgfTsKCiAgICBpbnQgdXNlcl9oZWlnaHQsIHVzZXJfY2hlc3QsIHVzZXJfd2Fpc3QsIHVzZXJfaGlwLCB1c2VyX3Nob2U7CiAgICBzdGQ6OmNvdXQgPDwgIkhlaWdodCAoY20pOiAiOwogICAgc3RkOjpjaW4gPj4gdXNlcl9oZWlnaHQ7CiAgICBzdGQ6OmNvdXQgPDwgIkNoZXN0IChjbSk6ICI7CiAgICBzdGQ6OmNpbiA+PiB1c2VyX2NoZXN0OwogICAgc3RkOjpjb3V0IDw8ICJXYWlzdCAoY20pOiAiOwogICAgc3RkOjpjaW4gPj4gdXNlcl93YWlzdDsKICAgIHN0ZDo6Y291dCA8PCAiSGlwIChjbSk6ICI7CiAgICBzdGQ6OmNpbiA+PiB1c2VyX2hpcDsKICAgIHN0ZDo6Y291dCA8PCAiU2hvZSBzaXplIChVSyk6ICI7CiAgICBzdGQ6OmNpbiA+PiB1c2VyX3Nob2U7CgogICAgc3RkOjp2ZWN0b3I8TWF0Y2hSZXN1bHQ+IHJlc3VsdHM7CiAgICBmb3IgKGNvbnN0IGF1dG8mIHN1aXQgOiBzdWl0cykgewogICAgICAgIGJvb2wgaGVpZ2h0X29rID0gKHVzZXJfaGVpZ2h0IDw9IHN1aXQuaGVpZ2h0KTsKICAgICAgICBib29sIGNoZXN0X29rICA9ICh1c2VyX2NoZXN0ID49IHN1aXQubWluQ2hlc3QgJiYgdXNlcl9jaGVzdCA8PSBzdWl0Lm1heENoZXN0KTsKICAgICAgICBib29sIHdhaXN0X29rICA9ICh1c2VyX3dhaXN0ID49IHN1aXQubWluV2Fpc3QgJiYgdXNlcl93YWlzdCA8PSBzdWl0Lm1heFdhaXN0KTsKICAgICAgICBib29sIGhpcF9vayAgICA9ICh1c2VyX2hpcCA+PSBzdWl0Lm1pbkhpcCAmJiB1c2VyX2hpcCA8PSBzdWl0Lm1heEhpcCk7CiAgICAgICAgYm9vbCBzaG9lX29rICAgPSAodXNlcl9zaG9lIDw9IHN1aXQuc2hvZSk7CgogICAgICAgIGludCBtYXRjaENvdW50ID0gKGhlaWdodF9vayA/IDEgOiAwKSArIChjaGVzdF9vayA/IDEgOiAwKSArCiAgICAgICAgICAgICAgICAgICAgICAgICAod2Fpc3Rfb2sgID8gMSA6IDApICsgKGhpcF9vayAgID8gMSA6IDApICsKICAgICAgICAgICAgICAgICAgICAgICAgIChzaG9lX29rICAgPyAxIDogMCk7CgogICAgICAgIHN0ZDo6c3RyaW5nIGZhaWxzOwogICAgICAgIGlmICghaGVpZ2h0X29rKSB7IGlmICghZmFpbHMuZW1wdHkoKSkgZmFpbHMgKz0gIiwgIjsgZmFpbHMgKz0gIkhlaWdodCI7IH0KICAgICAgICBpZiAoIWNoZXN0X29rKSAgeyBpZiAoIWZhaWxzLmVtcHR5KCkpIGZhaWxzICs9ICIsICI7IGZhaWxzICs9ICJDaGVzdCI7IH0KICAgICAgICBpZiAoIXdhaXN0X29rKSAgeyBpZiAoIWZhaWxzLmVtcHR5KCkpIGZhaWxzICs9ICIsICI7IGZhaWxzICs9ICJXYWlzdCI7IH0KICAgICAgICBpZiAoIWhpcF9vaykgICAgeyBpZiAoIWZhaWxzLmVtcHR5KCkpIGZhaWxzICs9ICIsICI7IGZhaWxzICs9ICJIaXAiOyB9CiAgICAgICAgaWYgKCFzaG9lX29rKSAgIHsgaWYgKCFmYWlscy5lbXB0eSgpKSBmYWlscyArPSAiLCAiOyBmYWlscyArPSAiU2hvZSI7IH0KCiAgICAgICAgcmVzdWx0cy5wdXNoX2JhY2soe3N1aXQsIG1hdGNoQ291bnQsIGZhaWxzfSk7CiAgICB9CgogICAgc3RkOjp2ZWN0b3I8TWF0Y2hSZXN1bHQ+IHBlcmZlY3RNYXRjaGVzOwogICAgZm9yIChjb25zdCBhdXRvICZyIDogcmVzdWx0cykgewogICAgICAgIGlmIChyLm1hdGNoQ291bnQgPT0gNSkKICAgICAgICAgICAgcGVyZmVjdE1hdGNoZXMucHVzaF9iYWNrKHIpOwogICAgfQoKICAgIGlmICghcGVyZmVjdE1hdGNoZXMuZW1wdHkoKSkgewogICAgICAgIHN0ZDo6Y291dCA8PCAiXG5QZXJmZWN0IGZpdDpcbiI7CiAgICAgICAgZm9yIChjb25zdCBhdXRvICZwIDogcGVyZmVjdE1hdGNoZXMpCiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiICAtICIgPDwgcC5zdWl0LmlkIDw8ICJcbiI7CiAgICB9IGVsc2UgewogICAgICAgIHN0ZDo6Y291dCA8PCAiXG5ObyBwZXJmZWN0IGZpdFxuIjsKICAgIH0KCiAgICBzdGQ6OnNvcnQocmVzdWx0cy5iZWdpbigpLCByZXN1bHRzLmVuZCgpLCBjb21wYXJlUmVzdWx0cyk7CgogICAgc3RkOjp2ZWN0b3I8TWF0Y2hSZXN1bHQ+IGJlc3RGaXRzOwogICAgZm9yIChjb25zdCBhdXRvICZyIDogcmVzdWx0cykgewogICAgICAgIGlmIChyLm1hdGNoQ291bnQgPCA1KQogICAgICAgICAgICBiZXN0Rml0cy5wdXNoX2JhY2socik7CiAgICB9CgogICAgaWYgKCFiZXN0Rml0cy5lbXB0eSgpKSB7CiAgICAgICAgc3RkOjpjb3V0IDw8ICJcbkJlc3QgZml0czpcbiI7CiAgICAgICAgaW50IGNvdW50ID0gMDsKICAgICAgICBmb3IgKGNvbnN0IGF1dG8gJmIgOiBiZXN0Rml0cykgewogICAgICAgICAgICBpZiAoY291bnQgPj0gMykgYnJlYWs7CiAgICAgICAgICAgIHN0ZDo6Y291dCA8PCAiICAtICIgPDwgYi5zdWl0LmlkOwogICAgICAgICAgICBpZiAoIWIuZmFpbFBhcmFtcy5lbXB0eSgpKQogICAgICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICIgKCIgPDwgYi5mYWlsUGFyYW1zIDw8ICIpIjsKICAgICAgICAgICAgc3RkOjpjb3V0IDw8ICJcbiI7CiAgICAgICAgICAgIGNvdW50Kys7CiAgICAgICAgfQogICAgfQoKICAgIHJldHVybiAwOwp9