1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 | #include <iostream> #include <string> #include <sstream> #include <stdexcept> int main (int argc, char *argv[]) { std::string line; while (std::getline (std::cin, line)) { int N, M; std::istringstream iss (line); if (!(iss >> N >> M)) throw std::runtime_error ("input error #1"); std::cerr << "N = " << N << ", M = " << M << std::endl; for (int i =0; i < M; ++i) { std::string word; int value1, value2; if (!(iss >> word)) throw std::runtime_error ("input error #2"); std::istringstream inner_iss (word); if (inner_iss.peek () != '(' || !inner_iss.ignore () || !(inner_iss >> value1)) throw std::runtime_error ("unexpected tokens; expected (, <value1>"); if (inner_iss.peek () != ',' || !inner_iss.ignore () || !(inner_iss >> value2)) throw std::runtime_error ("unexpected tokens; expected , <value2>"); if (inner_iss.peek () != ')') throw std::runtime_error ("unexpected token expected )"); std::cerr << "\t value1 = " << value1 << ", value2 = " << value2 << std::endl; } } } |
ICAgICNpbmNsdWRlIDxpb3N0cmVhbT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgI2luY2x1ZGUgPHN0cmluZz4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAjaW5jbHVkZSA8c3N0cmVhbT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICNpbmNsdWRlIDxzdGRleGNlcHQ+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICBpbnQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIHN0ZDo6c3RyaW5nIGxpbmU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICB3aGlsZSAoc3RkOjpnZXRsaW5lIChzdGQ6OmNpbiwgbGluZSkpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgaW50IE4sIE07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaXNzIChsaW5lKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgaWYgKCEoaXNzID4+IE4gPj4gTSkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvciAoImlucHV0IGVycm9yICMxIik7ICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgc3RkOjpjZXJyIDw8ICJOID0gIiA8PCBOIDw8ICIsIE0gPSAiIDw8IE0gPDwgc3RkOjplbmRsOyAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgIGZvciAoaW50IGkgPTA7IGkgPCBNOyArK2kpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBzdGQ6OnN0cmluZyB3b3JkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgIGludCB2YWx1ZTEsIHZhbHVlMjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBpZiAoIShpc3MgPj4gd29yZCkpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yICgiaW5wdXQgZXJyb3IgIzIiKTsgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICBzdGQ6OmlzdHJpbmdzdHJlYW0gaW5uZXJfaXNzICh3b3JkKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgaWYgKGlubmVyX2lzcy5wZWVrICgpICE9ICcoJyB8fCAhaW5uZXJfaXNzLmlnbm9yZSAoKSB8fCAhKGlubmVyX2lzcyA+PiB2YWx1ZTEpKQogICAgICAgICAgICB0aHJvdyBzdGQ6OnJ1bnRpbWVfZXJyb3IgKCJ1bmV4cGVjdGVkIHRva2VuczsgZXhwZWN0ZWQgKCwgPHZhbHVlMT4iKTsgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgICAgICAgIGlmIChpbm5lcl9pc3MucGVlayAoKSAhPSAnLCcgfHwgIWlubmVyX2lzcy5pZ25vcmUgKCkgIHx8ICEoaW5uZXJfaXNzID4+IHZhbHVlMikpCiAgICAgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvciAoInVuZXhwZWN0ZWQgdG9rZW5zOyBleHBlY3RlZCAsIDx2YWx1ZTI+Iik7ICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgaWYgKGlubmVyX2lzcy5wZWVrICgpICE9ICcpJykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgICAgICAgIHRocm93IHN0ZDo6cnVudGltZV9lcnJvciAoInVuZXhwZWN0ZWQgdG9rZW4gZXhwZWN0ZWQgKSIpOyAgICAgICAgICAgICAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAogICAgICAgICAgc3RkOjpjZXJyIDw8ICJcdCB2YWx1ZTEgPSAiIDw8IHZhbHVlMSA8PCAiLCB2YWx1ZTIgPSAiIDw8IHZhbHVlMiA8PCBzdGQ6OmVuZGw7CiAgICAgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCiAgICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAgIH0g


