#include <iostream>
bool password_equals(const std::string &s1,const std::string &s2){
// originally i wanted this as a 3rd parameter, but then it could easily
// be misused by the caller, and leak the password length
// (if the caller did max_length = MAX(s1.length(),s2.length()) on the hacker's input)
const int max_length=500;
// TODO: should probably throw a runtime_error or something if either input.length() > max_length
char s1c[max_length]={0};
char s2c[max_length]={0};
s1.copy(&s1c[0],max_length);
s2.copy(&s2c[0],max_length);
int result=0;
for (int i = 0; i < max_length; ++i) {
result |= s1c[i] ^ s2c[i];
}
return (result==0);
}
int main() {
// your code goes here
std::cout << password_equals("yup","yup") << " - " << password_equals("yup","nope");
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgoKYm9vbCBwYXNzd29yZF9lcXVhbHMoY29uc3Qgc3RkOjpzdHJpbmcgJnMxLGNvbnN0IHN0ZDo6c3RyaW5nICZzMil7CgkvLyBvcmlnaW5hbGx5IGkgd2FudGVkIHRoaXMgYXMgYSAzcmQgcGFyYW1ldGVyLCBidXQgdGhlbiBpdCBjb3VsZCBlYXNpbHkKCS8vIGJlIG1pc3VzZWQgYnkgdGhlIGNhbGxlciwgYW5kIGxlYWsgdGhlIHBhc3N3b3JkIGxlbmd0aCAKCS8vIChpZiB0aGUgY2FsbGVyIGRpZCBtYXhfbGVuZ3RoID0gTUFYKHMxLmxlbmd0aCgpLHMyLmxlbmd0aCgpKSBvbiB0aGUgaGFja2VyJ3MgaW5wdXQpCgljb25zdCBpbnQgbWF4X2xlbmd0aD01MDA7CgkvLyBUT0RPOiBzaG91bGQgcHJvYmFibHkgdGhyb3cgYSBydW50aW1lX2Vycm9yIG9yIHNvbWV0aGluZyBpZiBlaXRoZXIgaW5wdXQubGVuZ3RoKCkgPiBtYXhfbGVuZ3RoCgljaGFyIHMxY1ttYXhfbGVuZ3RoXT17MH07CgljaGFyIHMyY1ttYXhfbGVuZ3RoXT17MH07CglzMS5jb3B5KCZzMWNbMF0sbWF4X2xlbmd0aCk7CglzMi5jb3B5KCZzMmNbMF0sbWF4X2xlbmd0aCk7CglpbnQgcmVzdWx0PTA7Cglmb3IgKGludCBpID0gMDsgaSA8IG1heF9sZW5ndGg7ICsraSkgewoJCXJlc3VsdCB8PSBzMWNbaV0gXiBzMmNbaV07Cgl9CglyZXR1cm4gKHJlc3VsdD09MCk7Cn0KIAppbnQgbWFpbigpIHsKCS8vIHlvdXIgY29kZSBnb2VzIGhlcmUKCXN0ZDo6Y291dCA8PCBwYXNzd29yZF9lcXVhbHMoInl1cCIsInl1cCIpIDw8ICIgLSAiIDw8IHBhc3N3b3JkX2VxdWFscygieXVwIiwibm9wZSIpOwoJcmV0dXJuIDA7Cn0=