#include <iostream>
#include <iomanip>
#include <string>
enum class ReplaceState {
Begin, End
};
int main() {
using namespace std;
string const begin_replace = "0 / END OF GENERATOR DATA, BEGIN BRANCH DATA";
string const end_replace = "0 / END OF BRANCH DATA, BEGIN TRANSFORMER DATA";
ReplaceState state = ReplaceState::End;
string line; int replacing_number = 1;
while( getline(cin, line) ) {
// state change
if( line.find(begin_replace) != string::npos ) {
cout << line << endl;
state = ReplaceState::Begin;
continue;
}
else if( line.find(end_replace) != string::npos ) {
cout << line << endl;
state = ReplaceState::End;
continue;
}
// determine to replace or not
if( state == ReplaceState::Begin ) {
// find 3rd comma
string::size_type comma = 0;
for( int cnt = 0; cnt != 3; ++cnt )
comma = line.find_first_of( ',', comma+1 );
// output first two fields
cout << line.substr( 0, comma+1 ) << " ";
// output replacing number
cout << fixed << setprecision(5) << (float)replacing_number++;
// output remained fields
comma = line.find_first_of( ',', comma+1 );
cout << line.substr( comma ) << endl;
} else {
cout << line << endl;
}
}
} // main()
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPHN0cmluZz4KIAplbnVtIGNsYXNzIFJlcGxhY2VTdGF0ZSB7CiAgICBCZWdpbiwgRW5kCn07CiAKaW50IG1haW4oKSB7CiAKICAgIHVzaW5nIG5hbWVzcGFjZSBzdGQ7CiAKICAgIHN0cmluZyBjb25zdCBiZWdpbl9yZXBsYWNlID0gIjAgLyBFTkQgT0YgR0VORVJBVE9SIERBVEEsIEJFR0lOIEJSQU5DSCBEQVRBIjsKICAgIHN0cmluZyBjb25zdCBlbmRfcmVwbGFjZSA9ICIwIC8gRU5EIE9GIEJSQU5DSCBEQVRBLCBCRUdJTiBUUkFOU0ZPUk1FUiBEQVRBIjsKICAgIAogICAgUmVwbGFjZVN0YXRlIHN0YXRlID0gUmVwbGFjZVN0YXRlOjpFbmQ7CiAgICBzdHJpbmcgbGluZTsgaW50IHJlcGxhY2luZ19udW1iZXIgPSAxOwogICAgd2hpbGUoIGdldGxpbmUoY2luLCBsaW5lKSApIHsKICAgICAgICAvLyBzdGF0ZSBjaGFuZ2UKICAgICAgICBpZiggbGluZS5maW5kKGJlZ2luX3JlcGxhY2UpICE9IHN0cmluZzo6bnBvcyApIHsKICAgICAgICAgICAgY291dCA8PCBsaW5lIDw8IGVuZGw7CiAgICAgICAgICAgIHN0YXRlID0gUmVwbGFjZVN0YXRlOjpCZWdpbjsKICAgICAgICAgICAgY29udGludWU7CiAgICAgICAgfSAKICAgICAgICBlbHNlIGlmKCBsaW5lLmZpbmQoZW5kX3JlcGxhY2UpICE9IHN0cmluZzo6bnBvcyApIHsKICAgICAgICAgICAgY291dCA8PCBsaW5lIDw8IGVuZGw7CiAgICAgICAgICAgIHN0YXRlID0gUmVwbGFjZVN0YXRlOjpFbmQ7CiAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgIH0KICAgICAgICAvLyBkZXRlcm1pbmUgdG8gcmVwbGFjZSBvciBub3QKICAgICAgICBpZiggc3RhdGUgPT0gUmVwbGFjZVN0YXRlOjpCZWdpbiApIHsKICAgICAgICAgICAgLy8gZmluZCAzcmQgY29tbWEKICAgICAgICAgICAgc3RyaW5nOjpzaXplX3R5cGUgY29tbWEgPSAwOwogICAgICAgICAgICBmb3IoIGludCBjbnQgPSAwOyBjbnQgIT0gMzsgKytjbnQgKSAKICAgICAgICAgICAgICAgIGNvbW1hID0gbGluZS5maW5kX2ZpcnN0X29mKCAnLCcsIGNvbW1hKzEgKTsKICAgICAgICAgICAgCiAgICAgICAgICAgIC8vIG91dHB1dCBmaXJzdCB0d28gZmllbGRzCiAgICAgICAgICAgIGNvdXQgPDwgbGluZS5zdWJzdHIoIDAsIGNvbW1hKzEgKSA8PCAiICI7CiAgICAgICAgICAgIAogICAgICAgICAgICAvLyBvdXRwdXQgcmVwbGFjaW5nIG51bWJlcgogICAgICAgICAgICBjb3V0IDw8IGZpeGVkIDw8IHNldHByZWNpc2lvbig1KSA8PCAoZmxvYXQpcmVwbGFjaW5nX251bWJlcisrOwogICAgICAgICAgICAKICAgICAgICAgICAgLy8gb3V0cHV0IHJlbWFpbmVkIGZpZWxkcwogICAgICAgICAgICBjb21tYSA9IGxpbmUuZmluZF9maXJzdF9vZiggJywnLCBjb21tYSsxICk7CiAgICAgICAgICAgIGNvdXQgPDwgbGluZS5zdWJzdHIoIGNvbW1hICkgPDwgZW5kbDsKICAgICAgICB9IGVsc2UgewogICAgICAgICAgICBjb3V0IDw8IGxpbmUgPDwgZW5kbDsKICAgICAgICB9CiAgICB9Cn0gLy8gbWFpbigp