#include <iostream>
#include <string>
using namespace std;
int findOptimal(string &s) {
s += '0'; // add a sentinel 0
int best_zero = -1;
int prev_zero = -1;
int zeros_in_interval = 0;
int start = 0;
int best_answer = -1;
for(int i = 0; i < (int)s.length(); ++i) {
if(s[i] == '1') continue;
else if(s[i] == '0' and zeros_in_interval == 0) {
zeros_in_interval++;
prev_zero = i;
}
else if(s[i] == '0' and zeros_in_interval == 1) {
int curr_answer = i - start; // [start, i) only contains one 0
cout << "tried this : [" << s.substr(start, i - start) << "]\n";
if(curr_answer > best_answer) {
best_answer = curr_answer;
best_zero = prev_zero;
}
start = prev_zero + 1;
prev_zero = i;
}
}
cout << "Answer = " << best_zero << endl;
return best_zero;
}
int main() {
string input = "011101101001";
findOptimal(input);
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8c3RyaW5nPgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKCmludCBmaW5kT3B0aW1hbChzdHJpbmcgJnMpIHsKCXMgKz0gJzAnOyAvLyBhZGQgYSBzZW50aW5lbCAwCglpbnQgYmVzdF96ZXJvID0gLTE7CglpbnQgcHJldl96ZXJvID0gLTE7CglpbnQgemVyb3NfaW5faW50ZXJ2YWwgPSAwOwoJaW50IHN0YXJ0ID0gMDsKCWludCBiZXN0X2Fuc3dlciA9IC0xOwoJZm9yKGludCBpID0gMDsgaSA8IChpbnQpcy5sZW5ndGgoKTsgKytpKSB7CgkJaWYoc1tpXSA9PSAnMScpIGNvbnRpbnVlOwoJCWVsc2UgaWYoc1tpXSA9PSAnMCcgYW5kICB6ZXJvc19pbl9pbnRlcnZhbCA9PSAwKSB7CgkJCXplcm9zX2luX2ludGVydmFsKys7CgkJCXByZXZfemVybyA9IGk7CgkJfQoJCWVsc2UgaWYoc1tpXSA9PSAnMCcgYW5kIHplcm9zX2luX2ludGVydmFsID09IDEpIHsKCQkJaW50IGN1cnJfYW5zd2VyID0gIGkgLSBzdGFydDsgLy8gW3N0YXJ0LCBpKSBvbmx5IGNvbnRhaW5zIG9uZSAwCgkJCWNvdXQgPDwgInRyaWVkIHRoaXMgOiBbIiA8PCBzLnN1YnN0cihzdGFydCwgaSAtIHN0YXJ0KSA8PCAiXVxuIjsKCQkJaWYoY3Vycl9hbnN3ZXIgPiBiZXN0X2Fuc3dlcikgewoJCQkJYmVzdF9hbnN3ZXIgPSBjdXJyX2Fuc3dlcjsKCQkJCWJlc3RfemVybyA9IHByZXZfemVybzsKCQkJfQoJCQlzdGFydCA9IHByZXZfemVybyArIDE7CgkJCXByZXZfemVybyA9IGk7CgkJfQoJfQoJY291dCA8PCAiQW5zd2VyID0gIiA8PCBiZXN0X3plcm8gPDwgZW5kbDsKCXJldHVybiBiZXN0X3plcm87Cn0KaW50IG1haW4oKSB7CglzdHJpbmcgaW5wdXQgPSAiMDExMTAxMTAxMDAxIjsKCWZpbmRPcHRpbWFsKGlucHV0KTsKIAlyZXR1cm4gMDsKfQ==