import java.io.IOException;
import java.util.HashMap;
import java.io.OutputStreamWriter;
import java.io.InputStreamReader;
import java.io.BufferedReader;
import java.io.PrintWriter;
class Recode{
boolean hear;
public Recode
(String pass,
boolean hear
){ this.pass = pass;
this.hear = hear;
}
}
class Comments {
public static String errNewAdd
= "fail: user already exists\n"; public static String errLogin
= "fail: no such user\n"; public static String errInPass
= "fail: incorrect password\n"; public static String errAlIn
= "fail: already logged in\n"; public static String errLogout
= "fail: already logged out\n"; public static String sucNewAdd
= "success: new user added\n"; public static String sucLogin
= "success: user logged in\n"; public static String sucLogout
= "success: user logged out\n"; }
public class Main{
private static HashMap
<String, Recode
> DataBase
= new HashMap
<String, Recode
>();
int n = nextInt();
for (int i = 0; i < n; i++){
try{
Query(getRequest());
}
err(e);
}
}
out.flush();
}
return in.readLine().split(" ");
}
public static void Query
(String[] req
){ if(req[0].equals("register")){ // if register - we member the password and name
Registration(req[1], req[2]);
}
else if(req[0].equals("login")){
Login(req[1],req[2]);
}
else if(req[0].equals("logout")){
Logout(req[1]);
}
}
if(!DataBase.containsKey(user)){
DataBase.put(user, new Recode(pass, false));
out.print(Comments.sucNewAdd);
}
else{
out.print(Comments.errNewAdd);
}
}
if(DataBase.containsKey(user)){
if(DataBase.get(user).pass.equals(pass)){
if(!DataBase.get(user).hear){
DataBase.put(user, new Recode(pass, true));
out.print(Comments.sucLogin);
}
else out.print(Comments.errAlIn);
}
else out.print(Comments.errInPass);
}
else out.print(Comments.errLogin);
}
public static void Logout
(String user
){ if(DataBase.containsKey(user)){
if(DataBase.get(user).hear){
DataBase.put(user, new Recode(DataBase.get(user).pass, false));
out.print(Comments.sucLogout);
}
else out.print(Comments.errLogout);
}
else out.print(Comments.errLogin);
}
return Integer.
parseInt(in.
readLine()); }
private static void err
(Object a
){ out.println(a);
}
}
aW1wb3J0IGphdmEuaW8uSU9FeGNlcHRpb247CmltcG9ydCBqYXZhLnV0aWwuSGFzaE1hcDsKaW1wb3J0IGphdmEuaW8uT3V0cHV0U3RyZWFtV3JpdGVyOwppbXBvcnQgamF2YS5pby5JbnB1dFN0cmVhbVJlYWRlcjsKaW1wb3J0IGphdmEuaW8uQnVmZmVyZWRSZWFkZXI7CmltcG9ydCBqYXZhLmlvLlByaW50V3JpdGVyOwoKY2xhc3MgUmVjb2RlewoJU3RyaW5nIHBhc3M7Cglib29sZWFuIGhlYXI7CglwdWJsaWMgUmVjb2RlKFN0cmluZyBwYXNzLCBib29sZWFuIGhlYXIpewoJCXRoaXMucGFzcyA9IHBhc3M7CgkJdGhpcy5oZWFyID0gaGVhcjsKCX0KfQoKY2xhc3MgQ29tbWVudHMgewoJcHVibGljIHN0YXRpYyBTdHJpbmcgZXJyTmV3QWRkID0gImZhaWw6IHVzZXIgYWxyZWFkeSBleGlzdHNcbiI7CglwdWJsaWMgc3RhdGljIFN0cmluZyBlcnJMb2dpbiA9ICJmYWlsOiBubyBzdWNoIHVzZXJcbiI7CglwdWJsaWMgc3RhdGljIFN0cmluZyBlcnJJblBhc3MgPSAiZmFpbDogaW5jb3JyZWN0IHBhc3N3b3JkXG4iOwoJcHVibGljIHN0YXRpYyBTdHJpbmcgZXJyQWxJbiA9ICJmYWlsOiBhbHJlYWR5IGxvZ2dlZCBpblxuIjsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIGVyckxvZ291dCA9ICJmYWlsOiBhbHJlYWR5IGxvZ2dlZCBvdXRcbiI7CglwdWJsaWMgc3RhdGljIFN0cmluZyBzdWNOZXdBZGQgPSAic3VjY2VzczogbmV3IHVzZXIgYWRkZWRcbiI7CglwdWJsaWMgc3RhdGljIFN0cmluZyBzdWNMb2dpbiA9ICJzdWNjZXNzOiB1c2VyIGxvZ2dlZCBpblxuIjsKCXB1YmxpYyBzdGF0aWMgU3RyaW5nIHN1Y0xvZ291dCA9ICJzdWNjZXNzOiB1c2VyIGxvZ2dlZCBvdXRcbiI7Cn0KCnB1YmxpYyBjbGFzcyBNYWluewoJcHJpdmF0ZSBzdGF0aWMgSGFzaE1hcDxTdHJpbmcsIFJlY29kZT4gRGF0YUJhc2UgPSBuZXcgSGFzaE1hcDxTdHJpbmcsIFJlY29kZT4oKTsKCQoJcHJpdmF0ZSBzdGF0aWMgQnVmZmVyZWRSZWFkZXIgaW4gPSBuZXcgQnVmZmVyZWRSZWFkZXIobmV3IElucHV0U3RyZWFtUmVhZGVyKFN5c3RlbS5pbikpOwoJcHJpdmF0ZSBzdGF0aWMgUHJpbnRXcml0ZXIgb3V0ID0gbmV3IFByaW50V3JpdGVyKG5ldyBPdXRwdXRTdHJlYW1Xcml0ZXIoU3lzdGVtLm91dCkpOwoJCglwdWJsaWMgc3RhdGljIHZvaWQgbWFpbihTdHJpbmdbXSBhcmdzKSB0aHJvd3MgamF2YS5sYW5nLkV4Y2VwdGlvbnsKCQlpbnQgbiA9IG5leHRJbnQoKTsKCQlmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKyl7CgkJCXRyeXsKCQkJCVF1ZXJ5KGdldFJlcXVlc3QoKSk7CgkJCX0KCQkJY2F0Y2goRXhjZXB0aW9uIGUpewoJCQkJZXJyKGUpOwoJCQl9CgkJfQoJCW91dC5mbHVzaCgpOwoJfQoJCglwdWJsaWMgc3RhdGljIFN0cmluZ1tdIGdldFJlcXVlc3QoKSB0aHJvd3MgSU9FeGNlcHRpb257CgkJcmV0dXJuIGluLnJlYWRMaW5lKCkuc3BsaXQoIiAiKTsKCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIFF1ZXJ5KFN0cmluZ1tdIHJlcSl7CgkJaWYocmVxWzBdLmVxdWFscygicmVnaXN0ZXIiKSl7IC8vIGlmIHJlZ2lzdGVyIC0gd2UgbWVtYmVyIHRoZSBwYXNzd29yZCBhbmQgbmFtZQoJCQlSZWdpc3RyYXRpb24ocmVxWzFdLCByZXFbMl0pOwoJCX0KCQllbHNlIGlmKHJlcVswXS5lcXVhbHMoImxvZ2luIikpewoJCQlMb2dpbihyZXFbMV0scmVxWzJdKTsKCQl9CgkJZWxzZSBpZihyZXFbMF0uZXF1YWxzKCJsb2dvdXQiKSl7CgkJCUxvZ291dChyZXFbMV0pOwoJCX0KCX0KCQoJcHVibGljIHN0YXRpYyB2b2lkIFJlZ2lzdHJhdGlvbihTdHJpbmcgdXNlciwgU3RyaW5nIHBhc3MpewoJCWlmKCFEYXRhQmFzZS5jb250YWluc0tleSh1c2VyKSl7CgkJCURhdGFCYXNlLnB1dCh1c2VyLCBuZXcgUmVjb2RlKHBhc3MsIGZhbHNlKSk7CgkJCW91dC5wcmludChDb21tZW50cy5zdWNOZXdBZGQpOwoJCX0KCQllbHNlewoJCQlvdXQucHJpbnQoQ29tbWVudHMuZXJyTmV3QWRkKTsKCQl9Cgl9CgkKCQoJcHVibGljIHN0YXRpYyB2b2lkIExvZ2luKFN0cmluZyB1c2VyLCBTdHJpbmcgcGFzcyl7CgkJaWYoRGF0YUJhc2UuY29udGFpbnNLZXkodXNlcikpewoJCQlpZihEYXRhQmFzZS5nZXQodXNlcikucGFzcy5lcXVhbHMocGFzcykpewoJCQkJaWYoIURhdGFCYXNlLmdldCh1c2VyKS5oZWFyKXsKCQkJCQlEYXRhQmFzZS5wdXQodXNlciwgbmV3IFJlY29kZShwYXNzLCB0cnVlKSk7CgkJCQkJb3V0LnByaW50KENvbW1lbnRzLnN1Y0xvZ2luKTsKCQkJCX0gCgkJCQllbHNlIG91dC5wcmludChDb21tZW50cy5lcnJBbEluKTsKCQkJfQoJCQllbHNlIG91dC5wcmludChDb21tZW50cy5lcnJJblBhc3MpOwoJCX0KCQllbHNlIG91dC5wcmludChDb21tZW50cy5lcnJMb2dpbik7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgdm9pZCBMb2dvdXQoU3RyaW5nIHVzZXIpewoJCWlmKERhdGFCYXNlLmNvbnRhaW5zS2V5KHVzZXIpKXsKCQkJaWYoRGF0YUJhc2UuZ2V0KHVzZXIpLmhlYXIpewoJCQkJRGF0YUJhc2UucHV0KHVzZXIsIG5ldyBSZWNvZGUoRGF0YUJhc2UuZ2V0KHVzZXIpLnBhc3MsIGZhbHNlKSk7CgkJCQlvdXQucHJpbnQoQ29tbWVudHMuc3VjTG9nb3V0KTsKCQkJfQoJCQllbHNlIG91dC5wcmludChDb21tZW50cy5lcnJMb2dvdXQpOwoJCX0KCQllbHNlIG91dC5wcmludChDb21tZW50cy5lcnJMb2dpbik7Cgl9CgkKCXB1YmxpYyBzdGF0aWMgaW50IG5leHRJbnQoKSB0aHJvd3MgSU9FeGNlcHRpb257CgkJcmV0dXJuIEludGVnZXIucGFyc2VJbnQoaW4ucmVhZExpbmUoKSk7Cgl9CgkKCXByaXZhdGUgc3RhdGljIHZvaWQgZXJyKE9iamVjdCBhKXsKCQlvdXQucHJpbnRsbihhKTsKCX0KfQ==