#include <iomanip>
#include <ios>
#include <iostream>
// write your code here......
#include <vector>
#include <algorithm>

using namespace std;

class Employee {

    private:
        string name;
        double salary;
    // write your code here......
    public:
        Employee(string n, double s): name{n}, salary(s) {}
        double tax() {
            double temp {salary - 3500};
            if (temp > 80000) {
                return (temp * 0.45) - 13505;
            } else if (temp > 55000) {
                return (temp * 0.35) - 5505;
            } else if (temp > 35000) {
                return (temp * 0.30) - 2755;
            } else if (temp > 9000) {
                return (temp * 0.25) - 1005;
            } else if (temp > 4500) {
                return (temp * 0.20) - 555;
            } else if (temp > 1500) {
                return (temp * 0.10) - 105;
            } else if (temp >= 0 && temp <= 1500) {
                return temp * 0.03;
            } else {
                return 0;
            }
        }

        double get_salary() const {
            return salary;
        }

        string get_name() const {
            return name;
        }

};

bool cmp(const Employee& a, const Employee&b) {
    return a.get_salary() > b.get_salary();
}

int main() {

    // write your code here......
    Employee zs("张三", 6500);
    Employee ls("李四", 8000);
    Employee ww("王五", 100000);

    vector<Employee> v {zs, ls, ww};

    sort(v.begin(), v.end(), cmp);

    for (auto& item: v) {
        cout << item.get_name() << "应该缴纳的个人所得税是:" << fixed << setprecision(1) << item.tax() << endl;
    }

    return 0;
}