#include <string>
#include <iostream>
#include <iomanip>
#include <chrono>
using namespace std;
int main(int argc, const char * argv[])
{
string s;
for(int i = 0; i < 100000; ++i) s += rand()%26+'A';
auto start = chrono::high_resolution_clock::now();
string d;
d.reserve(s.length()*3/2);
for(size_t i = 0; i < s.length(); ++i)
{
d += s[i++];
if (i < s.length())
{
d += s[i];
d += '-';
}
}
auto stop = chrono::high_resolution_clock::now();
cout << chrono::duration_cast<chrono::nanoseconds>(stop-start).count() << endl;
start = chrono::high_resolution_clock::now();
string t;
for(size_t i = 0; i < s.length(); ++i)
{
t += s[i++];
if (i < s.length())
{
t += s[i];
t += '-';
}
}
stop = chrono::high_resolution_clock::now();
cout << chrono::duration_cast<chrono::nanoseconds>(stop-start).count() << endl;
//cout << t << endl << endl << endl;
start = chrono::high_resolution_clock::now();
for (size_t i(0), j(0); i < s.size(); i++, j++)
{
if (j > 1) {
s.insert(i, "-");
j = -1;
}
}
stop = chrono::high_resolution_clock::now();
cout << chrono::duration_cast<chrono::nanoseconds>(stop-start).count() << endl;
// cout << s << endl;
}
I2luY2x1ZGUgPHN0cmluZz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aW9tYW5pcD4KI2luY2x1ZGUgPGNocm9ubz4KCgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBtYWluKGludCBhcmdjLCBjb25zdCBjaGFyICogYXJndltdKQp7CgogICAgc3RyaW5nIHM7CiAgICBmb3IoaW50IGkgPSAwOyBpIDwgMTAwMDAwOyArK2kpIHMgKz0gcmFuZCgpJTI2KydBJzsKCiAgICBhdXRvIHN0YXJ0ID0gY2hyb25vOjpoaWdoX3Jlc29sdXRpb25fY2xvY2s6Om5vdygpOwogICAgc3RyaW5nIGQ7CiAgICBkLnJlc2VydmUocy5sZW5ndGgoKSozLzIpOwogICAgZm9yKHNpemVfdCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkKICAgIHsKICAgICAgICBkICs9IHNbaSsrXTsKICAgICAgICBpZiAoaSA8IHMubGVuZ3RoKCkpCiAgICAgICAgewogICAgICAgICAgICBkICs9IHNbaV07CiAgICAgICAgICAgIGQgKz0gJy0nOwogICAgICAgIH0KICAgIH0KICAgIGF1dG8gc3RvcCA9IGNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKICAgIGNvdXQgPDwgY2hyb25vOjpkdXJhdGlvbl9jYXN0PGNocm9ubzo6bmFub3NlY29uZHM+KHN0b3Atc3RhcnQpLmNvdW50KCkgPDwgZW5kbDsKCiAgICBzdGFydCA9IGNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKICAgIHN0cmluZyB0OwogICAgZm9yKHNpemVfdCBpID0gMDsgaSA8IHMubGVuZ3RoKCk7ICsraSkKICAgIHsKICAgICAgICB0ICs9IHNbaSsrXTsKICAgICAgICBpZiAoaSA8IHMubGVuZ3RoKCkpCiAgICAgICAgewogICAgICAgICAgICB0ICs9IHNbaV07CiAgICAgICAgICAgIHQgKz0gJy0nOwogICAgICAgIH0KICAgIH0KICAgIHN0b3AgPSBjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CiAgICBjb3V0IDw8IGNocm9ubzo6ZHVyYXRpb25fY2FzdDxjaHJvbm86Om5hbm9zZWNvbmRzPihzdG9wLXN0YXJ0KS5jb3VudCgpIDw8IGVuZGw7CgogICAgLy9jb3V0IDw8IHQgPDwgZW5kbCA8PCBlbmRsIDw8IGVuZGw7CgogICAgc3RhcnQgPSBjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CiAgICBmb3IgKHNpemVfdCBpKDApLCBqKDApOyBpIDwgcy5zaXplKCk7IGkrKywgaisrKQogICAgewogICAgICAgIGlmIChqID4gMSkgewoKICAgICAgICAgICAgcy5pbnNlcnQoaSwgIi0iKTsKICAgICAgICAgICAgaiA9IC0xOwogICAgICAgIH0KICAgIH0KICAgIHN0b3AgPSBjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CiAgICBjb3V0IDw8IGNocm9ubzo6ZHVyYXRpb25fY2FzdDxjaHJvbm86Om5hbm9zZWNvbmRzPihzdG9wLXN0YXJ0KS5jb3VudCgpIDw8IGVuZGw7CiAgICAvLyBjb3V0IDw8IHMgPDwgZW5kbDsKCgp9Cg==