timus 2002. Test Task

来源:互联网 发布:linux c程序编译 编辑:程序博客网 时间:2024/05/18 23:57
#include <iostream>#include <string>#include <set>using namespace std;class Person { public:        Person(string name, string password) : name(name), password(password) { }        bool operator < (const Person& next) const   //don't forget const        { return name < next.name; }        bool operator == (const Person& next) const         { return name == next.name; }        const string getPassward() const { return password; }private:        string name;        string password;};int main(){    int n;    while (cin >> n) {        set<Person> regPerson;        set<Person> logedPerson;        while (n--) {            string operation;            cin >> operation;            if (operation == "register") {                string name, password;                cin >> name >> password;                Person p(name, password);                if (regPerson.empty()) {                    regPerson.insert(p);                    cout << "success: new user added\n";                    continue;                }                set<Person>::iterator it = regPerson.find(p);                if (it == regPerson.end()) {                    cout << "success: new user added\n";                    regPerson.insert(p);                } else {                    cout << "fail: user already exists\n";                }            } else if (operation == "login") {                string name, password;                cin >> name >> password;                Person p(name, password);                set<Person>::iterator it = regPerson.find(p);                if (logedPerson.empty()) {                    if (it == regPerson.end()) {                        cout << "fail: no such user\n";                    } else {                        if (p.getPassward() != it->getPassward()) {                            cout << "fail: incorrect password\n";                        } else {                            cout << "success: user logged in\n";                            logedPerson.insert(p);                        }                    }                    continue;                }                if (it == regPerson.end()) {                    cout << "fail: no such user\n";                } else {                    if (p.getPassward() != it->getPassward()) {                        cout << "fail: incorrect password\n";                    } else {                        if (logedPerson.find(p) != logedPerson.end()) {                            cout << "fail: already logged in\n";                        } else {                            cout << "success: user logged in\n";                            logedPerson.insert(p);                        }                    }                }            } else if (operation == "logout") {                string name;                cin >> name;                Person p(name, "");                set<Person>::iterator it = regPerson.find(p);                if (it == regPerson.end()) {                    cout << "fail: no such user\n";                } else {                    set<Person>::iterator it = logedPerson.find(p);                    if (it == logedPerson.end()) {                        cout << "fail: already logged out\n";                    } else {                        cout << "success: user logged out\n";                        logedPerson.erase(it);                    }                }            }        }    }    return 0;}

0 0
原创粉丝点击