#include <vector>
#include <algorithm>
#include <iostream>
using namespace std;
int diff(const vector<int>& arr)
{
auto first_negative = find_if(arr.begin(), arr.end(), [](const int& var){ return var < 0; });
if (first_negative == arr.end())
return 0;
int counter = 0;
auto second_positive = find_if(arr.begin(), arr.end(), [&counter](const int& var){
if (var > 0)
counter++;
if (counter == 2)
return true;
else return false;
});
if (second_positive == arr.end())
return 0;
return *first_negative - *second_positive;
}
int main()
{
vector<int> ar {0, 1, 67, 89, -76, 56, -5, 0, -89, 6, 78, 89};
cout << diff(ar) << endl;
cout << diff({0, 0, 0, 0}) << endl;
cout << diff({ -2, 1, 0, -5 }) << endl;
cout << diff({ 12, 10, 70, 5 }) << endl;
return 0;
}
I2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPGFsZ29yaXRobT4KI2luY2x1ZGUgPGlvc3RyZWFtPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCmludCBkaWZmKGNvbnN0IHZlY3RvcjxpbnQ+JiBhcnIpCnsKICBhdXRvIGZpcnN0X25lZ2F0aXZlID0gZmluZF9pZihhcnIuYmVnaW4oKSwgYXJyLmVuZCgpLCBbXShjb25zdCBpbnQmIHZhcil7IHJldHVybiB2YXIgPCAwOyB9KTsKICBpZiAoZmlyc3RfbmVnYXRpdmUgPT0gYXJyLmVuZCgpKQogICAgcmV0dXJuIDA7CgogIGludCBjb3VudGVyID0gMDsKICBhdXRvIHNlY29uZF9wb3NpdGl2ZSA9IGZpbmRfaWYoYXJyLmJlZ2luKCksIGFyci5lbmQoKSwgWyZjb3VudGVyXShjb25zdCBpbnQmIHZhcil7CiAgICBpZiAodmFyID4gMCkgCiAgICAgIGNvdW50ZXIrKzsKICAgIGlmIChjb3VudGVyID09IDIpIAogICAgICByZXR1cm4gdHJ1ZTsKICAgIGVsc2UgcmV0dXJuIGZhbHNlOwogIH0pOwoKICBpZiAoc2Vjb25kX3Bvc2l0aXZlID09IGFyci5lbmQoKSkKICAgIHJldHVybiAwOwoKICByZXR1cm4gKmZpcnN0X25lZ2F0aXZlIC0gKnNlY29uZF9wb3NpdGl2ZTsKfQoKaW50IG1haW4oKQp7CiAgdmVjdG9yPGludD4gYXIgezAsIDEsIDY3LCA4OSwgLTc2LCA1NiwgLTUsIDAsIC04OSwgNiwgNzgsIDg5fTsKCiAgY291dCA8PCBkaWZmKGFyKSA8PCBlbmRsOwogIGNvdXQgPDwgZGlmZih7MCwgMCwgMCwgMH0pIDw8IGVuZGw7CiAgY291dCA8PCBkaWZmKHsgLTIsIDEsIDAsIC01IH0pIDw8IGVuZGw7CiAgY291dCA8PCBkaWZmKHsgMTIsIDEwLCA3MCwgNSB9KSA8PCBlbmRsOwoKICByZXR1cm4gMDsKfQ==