#include <iostream>
#include <iomanip>
#include <string>
#include <vector>
#include <algorithm>
using namespace std;
class Person
{
string first;
string last;
int age;
public:
Person(string first_name, string last_name, int the_age);
string getFirstName() const { return first; }
string getLastName() const { return last; }
int getAge() const { return age; }
};
Person::Person(string first_name, string last_name, int the_age){
first = first_name;
last = last_name;
age = the_age;
}
int main()
{
vector<Person> people;
people.emplace_back("John", "Cool-Johnson", 15);
people.emplace_back("Paul", "Bob", 1000);
string::size_type max_fname = 10;
string::size_type max_lname = 9;
string::size_type max_age = 3;
for(const Person &p : people)
{
max_fname = max(max_fname, p.getFirstName().size());
max_lname = max(max_lname, p.getLastName().size());
max_age = max(max_age, to_string(p.getAge()).size());
}
cout << left << setfill(' ');
cout << setw(max_fname) << "First Name" << " " << setw(max_lname) << "Last Name" << " " << setw(max_age) << "Age" << "\n";
cout << setfill('-');
cout << setw(max_fname) << "" << " " << setw(max_lname) << "" << " " << setw(max_age) << "" << "\n";
cout << setfill(' ');
for(const Person &p : people)
{
cout << setw(max_fname) << p.getFirstName() << " " << setw(max_lname) << p.getLastName() << " " << setw(max_age) << p.getAge() << "\n";
}
cout << people.size() << " people\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmNsYXNzIFBlcnNvbgp7CglzdHJpbmcgZmlyc3Q7CiAgICBzdHJpbmcgbGFzdDsKICAgIGludCBhZ2U7CgpwdWJsaWM6CglQZXJzb24oc3RyaW5nIGZpcnN0X25hbWUsIHN0cmluZyBsYXN0X25hbWUsIGludCB0aGVfYWdlKTsKCglzdHJpbmcgZ2V0Rmlyc3ROYW1lKCkgY29uc3QgeyByZXR1cm4gZmlyc3Q7IH0KCXN0cmluZyBnZXRMYXN0TmFtZSgpIGNvbnN0IHsgcmV0dXJuIGxhc3Q7IH0KICAgIGludCBnZXRBZ2UoKSBjb25zdCB7IHJldHVybiBhZ2U7IH0KfTsKClBlcnNvbjo6UGVyc29uKHN0cmluZyBmaXJzdF9uYW1lLCBzdHJpbmcgbGFzdF9uYW1lLCBpbnQgdGhlX2FnZSl7CglmaXJzdCA9IGZpcnN0X25hbWU7CglsYXN0ID0gbGFzdF9uYW1lOwoJYWdlID0gdGhlX2FnZTsKfSAKCmludCBtYWluKCkKewoJdmVjdG9yPFBlcnNvbj4gcGVvcGxlOwoJcGVvcGxlLmVtcGxhY2VfYmFjaygiSm9obiIsICJDb29sLUpvaG5zb24iLCAxNSk7CglwZW9wbGUuZW1wbGFjZV9iYWNrKCJQYXVsIiwgIkJvYiIsIDEwMDApOwoKCXN0cmluZzo6c2l6ZV90eXBlIG1heF9mbmFtZSA9IDEwOwoJc3RyaW5nOjpzaXplX3R5cGUgbWF4X2xuYW1lID0gOTsKCXN0cmluZzo6c2l6ZV90eXBlIG1heF9hZ2UgPSAzOwoKCWZvcihjb25zdCBQZXJzb24gJnAgOiBwZW9wbGUpCgl7CiAgICAJbWF4X2ZuYW1lID0gbWF4KG1heF9mbmFtZSwgcC5nZXRGaXJzdE5hbWUoKS5zaXplKCkpOwoJICAgIG1heF9sbmFtZSA9IG1heChtYXhfbG5hbWUsIHAuZ2V0TGFzdE5hbWUoKS5zaXplKCkpOwogICAgCW1heF9hZ2UgPSBtYXgobWF4X2FnZSwgdG9fc3RyaW5nKHAuZ2V0QWdlKCkpLnNpemUoKSk7Cgl9CgoJY291dCA8PCBsZWZ0IDw8IHNldGZpbGwoJyAnKTsKCWNvdXQgPDwgc2V0dyhtYXhfZm5hbWUpIDw8ICJGaXJzdCBOYW1lIiA8PCAiICAiIDw8IHNldHcobWF4X2xuYW1lKSA8PCAiTGFzdCBOYW1lIiA8PCAiICAiIDw8IHNldHcobWF4X2FnZSkgPDwgIkFnZSIgPDwgIlxuIjsKCWNvdXQgPDwgc2V0ZmlsbCgnLScpOwoJY291dCA8PCBzZXR3KG1heF9mbmFtZSkgPDwgIiIgPDwgIiAgIiA8PCBzZXR3KG1heF9sbmFtZSkgPDwgIiIgPDwgIiAgIiA8PCBzZXR3KG1heF9hZ2UpIDw8ICIiIDw8ICJcbiI7Cgljb3V0IDw8IHNldGZpbGwoJyAnKTsKCglmb3IoY29uc3QgUGVyc29uICZwIDogcGVvcGxlKQoJewogICAgCWNvdXQgPDwgc2V0dyhtYXhfZm5hbWUpIDw8IHAuZ2V0Rmlyc3ROYW1lKCkgPDwgIiAgIiA8PCBzZXR3KG1heF9sbmFtZSkgPDwgcC5nZXRMYXN0TmFtZSgpIDw8ICIgICIgPDwgc2V0dyhtYXhfYWdlKSA8PCBwLmdldEFnZSgpIDw8ICJcbiI7Cgl9CgoJY291dCA8PCBwZW9wbGUuc2l6ZSgpIDw8ICIgcGVvcGxlXG4iOwoKCXJldHVybiAwOwp9