Submission
Status:
PPPPPPPPPP
Subtask/Task Score:
100/100
Score: 100
User: cyblox_boi
Problemset: นักสร้างเกม
Language: cpp
Time: 0.003 second
Submitted On: 2026-01-01 02:28:28
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
class Item
{
private:
string _name;
int _durability;
float _dmg;
public:
string getName()
{
return _name;
}
void setName(string name)
{
_name = name;
}
int getDurability()
{
return _durability;
}
float getDamage()
{
return _dmg;
}
void setDamage(int damage)
{
_dmg = damage;
}
Item() : _name("null"), _durability(0), _dmg(0.0f) {}
Item(string name, int durability, float dmg)
: _name(name), _durability(durability), _dmg(dmg) {}
};
class Character
{
private:
string charName;
float playerDamage = 0.0f;
vector<Item> inventory;
size_t _capItem = 0;
void calculateDamage()
{
playerDamage = 0.0f;
for (size_t i = 0; i < _capItem; i++)
{
playerDamage += inventory[i].getDamage();
}
}
public:
bool addItem(Item item)
{
if (_capItem >= 2)
{
throw bad_alloc();
}
if (item.getDurability() > 10)
{
inventory[_capItem] = item;
_capItem++;
calculateDamage();
}
return true;
}
bool removeItem()
{
if (_capItem == 0)
{
throw bad_alloc();
}
_capItem--;
inventory[_capItem] = Item();
calculateDamage();
return true;
}
float getDamage()
{
return playerDamage;
}
string getName()
{
return charName;
}
bool operator<(const Character &other) const
{
return playerDamage < other.playerDamage;
}
bool operator>(const Character &other) const
{
return playerDamage > other.playerDamage;
}
Character() : charName("null"), playerDamage(0.0f), _capItem(0)
{
inventory.resize(2);
}
Character(string name) : charName(name), playerDamage(0.0f), _capItem(0)
{
inventory.resize(2);
}
};
int main()
{
ios::sync_with_stdio(false);
cin.tie(nullptr);
int charCount = 0;
cin >> charCount;
vector<Character> characters(charCount);
for (int i = 0; i < charCount; i++)
{
string characterName;
cin >> characterName;
characters[i] = Character(characterName);
}
for (int i = 0; i < charCount; i++)
{
for (int j = 0; j < 2; j++)
{
string itemName;
int durability;
float damage;
cin >> itemName >> durability >> damage;
Item item(itemName, durability, damage);
characters[i].addItem(item);
}
}
auto it = max_element(characters.begin(), characters.end());
string playerName = it->getName();
int playerDamage = it->getDamage();
cout << playerName << " is the strongest with " << playerDamage << " units" << '\n';
return 0;
}