#include <iostream>
using namespace std;
int step_amounts[3] = {1000, 3000, 5000};
string step_names[3] = {"A", "B", "C"};
struct Stependy
{
short id;
int amount;
string name;
Stependy(short id)
: id(id), amount(step_amounts[id-1]), name(step_names[id-1])
{}
Stependy(short id, int amount)
: id(id), amount(amount), name(step_names[id-1])
{}
Stependy(short id, int amount, string name)
: id(id), amount(amount), name(name)
{}
};
struct Student
{
string fname;
string sname;
Stependy stependy;
template <typename ...S>
Student(string fname, string sname, S &&...s)
: fname(fname), sname(sname), stependy(forward<S>(s)...)
{}
};
int main()
{
Student students[] =
{
Student("Abc", "Def", 2),
Student("Aaa", "Ddd", 2, 2000),
Student("Bbb", "Eee", 2, 4000, "other"),
Student("Ccc", "Fff", 4, 7000, "qqq")
};
for (auto st : students)
cout << st.fname << ' ' << st.sname << ' ' << st.stependy.id << ' ' << st.stependy.amount << ' ' << st.stependy.name << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBzdGVwX2Ftb3VudHNbM10gPSB7MTAwMCwgMzAwMCwgNTAwMH07CnN0cmluZyBzdGVwX25hbWVzWzNdID0geyJBIiwgIkIiLCAiQyJ9OwoKc3RydWN0IFN0ZXBlbmR5CnsKICBzaG9ydCBpZDsKICBpbnQgYW1vdW50OwogIHN0cmluZyBuYW1lOwogIAogIFN0ZXBlbmR5KHNob3J0IGlkKQogIDogaWQoaWQpLCBhbW91bnQoc3RlcF9hbW91bnRzW2lkLTFdKSwgbmFtZShzdGVwX25hbWVzW2lkLTFdKQogIHt9CgogIFN0ZXBlbmR5KHNob3J0IGlkLCBpbnQgYW1vdW50KQogIDogaWQoaWQpLCBhbW91bnQoYW1vdW50KSwgbmFtZShzdGVwX25hbWVzW2lkLTFdKQogIHt9CgogIFN0ZXBlbmR5KHNob3J0IGlkLCBpbnQgYW1vdW50LCBzdHJpbmcgbmFtZSkKICA6IGlkKGlkKSwgYW1vdW50KGFtb3VudCksIG5hbWUobmFtZSkKICB7fQp9OwoKc3RydWN0IFN0dWRlbnQKewogIHN0cmluZyBmbmFtZTsKICBzdHJpbmcgc25hbWU7CiAgU3RlcGVuZHkgc3RlcGVuZHk7CgogIHRlbXBsYXRlIDx0eXBlbmFtZSAuLi5TPgogIFN0dWRlbnQoc3RyaW5nIGZuYW1lLCBzdHJpbmcgc25hbWUsIFMgJiYuLi5zKQogIDogZm5hbWUoZm5hbWUpLCBzbmFtZShzbmFtZSksIHN0ZXBlbmR5KGZvcndhcmQ8Uz4ocykuLi4pCiAge30KfTsKCgppbnQgbWFpbigpCnsKICBTdHVkZW50IHN0dWRlbnRzW10gPSAKICB7CiAgICBTdHVkZW50KCJBYmMiLCAiRGVmIiwgMiksCiAgICBTdHVkZW50KCJBYWEiLCAiRGRkIiwgMiwgMjAwMCksCiAgICBTdHVkZW50KCJCYmIiLCAiRWVlIiwgMiwgNDAwMCwgIm90aGVyIiksCiAgICBTdHVkZW50KCJDY2MiLCAiRmZmIiwgNCwgNzAwMCwgInFxcSIpCiAgfTsKCiAgZm9yIChhdXRvIHN0IDogc3R1ZGVudHMpCiAgICBjb3V0IDw8IHN0LmZuYW1lIDw8ICcgJyA8PCBzdC5zbmFtZSA8PCAnICcgPDwgc3Quc3RlcGVuZHkuaWQgPDwgJyAnIDw8IHN0LnN0ZXBlbmR5LmFtb3VudCA8PCAnICcgPDwgc3Quc3RlcGVuZHkubmFtZSA8PCBlbmRsOwoKICByZXR1cm4gMDsKfQ==