#include <string>
#include <cstdio>
using std::string;
string getextn (const string &fn) { // mistreats files whose name starts with . but doesn't matter here.
int sep = fn.find_last_of(".\\/");
return (sep >= 0 && fn[sep] == '.') ? fn.substr(sep) : "";
}
void test_ (string fn) {
string ex = getextn(fn);
printf("%s => '%s'\n", fn.c_str(), ex.c_str());
}
void test (string fn) {
test_("/" + fn);
test_("./" + fn);
test_("./pathname/" + fn);
test_("./path.name/" + fn);
test_("pathname/" + fn);
test_("path.name/" + fn);
test_("c:\\path.name\\" + fn);
}
int main() {
printf("start\n");
// your code goes here
test("");
test(".");
test(".git_ignore");
test("filename");
test("filename.");
test("filename.tar");
test("filename.tar.gz");
return 0;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGNzdGRpbz4KdXNpbmcgc3RkOjpzdHJpbmc7CgpzdHJpbmcgZ2V0ZXh0biAoY29uc3Qgc3RyaW5nICZmbikgeyAvLyBtaXN0cmVhdHMgZmlsZXMgd2hvc2UgbmFtZSBzdGFydHMgd2l0aCAuIGJ1dCBkb2Vzbid0IG1hdHRlciBoZXJlLgoJaW50IHNlcCA9IGZuLmZpbmRfbGFzdF9vZigiLlxcLyIpOwogICAgcmV0dXJuIChzZXAgPj0gMCAmJiBmbltzZXBdID09ICcuJykgPyBmbi5zdWJzdHIoc2VwKSA6ICIiOwp9Cgp2b2lkIHRlc3RfIChzdHJpbmcgZm4pIHsKCXN0cmluZyBleCA9IGdldGV4dG4oZm4pOwoJcHJpbnRmKCIlcyA9PiAnJXMnXG4iLCBmbi5jX3N0cigpLCBleC5jX3N0cigpKTsKfQoKdm9pZCB0ZXN0IChzdHJpbmcgZm4pIHsKCXRlc3RfKCIvIiArIGZuKTsKCXRlc3RfKCIuLyIgKyBmbik7Cgl0ZXN0XygiLi9wYXRobmFtZS8iICsgZm4pOwoJdGVzdF8oIi4vcGF0aC5uYW1lLyIgKyBmbik7Cgl0ZXN0XygicGF0aG5hbWUvIiArIGZuKTsKCXRlc3RfKCJwYXRoLm5hbWUvIiArIGZuKTsKCXRlc3RfKCJjOlxccGF0aC5uYW1lXFwiICsgZm4pOwp9CgppbnQgbWFpbigpIHsKCXByaW50Zigic3RhcnRcbiIpOwoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJdGVzdCgiIik7Cgl0ZXN0KCIuIik7Cgl0ZXN0KCIuZ2l0X2lnbm9yZSIpOwoJdGVzdCgiZmlsZW5hbWUiKTsKCXRlc3QoImZpbGVuYW1lLiIpOwoJdGVzdCgiZmlsZW5hbWUudGFyIik7Cgl0ZXN0KCJmaWxlbmFtZS50YXIuZ3oiKTsKCXJldHVybiAwOwp9