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;
}