#include <iostream>
#include <numeric>
struct GEOGRAPHIC_REGION
{
float fNorthMost;
float fSouthMost;
float fWestMost;
float fEastMost;
};
GEOGRAPHIC_REGION combine(const GEOGRAPHIC_REGION& accum, const GEOGRAPHIC_REGION& tocombine)
{
GEOGRAPHIC_REGION combined = {
std::max(accum.fNorthMost, tocombine.fNorthMost),
std::min(accum.fSouthMost, tocombine.fSouthMost),
std::min(accum.fWestMost, tocombine.fWestMost),
std::max(accum.fEastMost, tocombine.fEastMost)
};
return combined;
}
int main()
{
const GEOGRAPHIC_REGION regions[] =
{
{ 2,-1,-1,1 },
{ 1,-2,-1,1 },
{ 1,-1,-2,1 },
{ 1,-1,-1,2 },
};
GEOGRAPHIC_REGION super = std::accumulate(regions, regions+4, regions[0], combine);
std::cout << "{ " << super.fNorthMost << ", "
<< super.fSouthMost << ", "
<< super.fWestMost << ", "
<< super.fEastMost << " }" << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8bnVtZXJpYz4KCnN0cnVjdCBHRU9HUkFQSElDX1JFR0lPTgp7ICAgIAogICAgZmxvYXQgZk5vcnRoTW9zdDsKICAgIGZsb2F0IGZTb3V0aE1vc3Q7CiAgICBmbG9hdCBmV2VzdE1vc3Q7CiAgICBmbG9hdCBmRWFzdE1vc3Q7Cn07CgpHRU9HUkFQSElDX1JFR0lPTiBjb21iaW5lKGNvbnN0IEdFT0dSQVBISUNfUkVHSU9OJiBhY2N1bSwgY29uc3QgR0VPR1JBUEhJQ19SRUdJT04mIHRvY29tYmluZSkKewogICAgR0VPR1JBUEhJQ19SRUdJT04gY29tYmluZWQgPSB7IAogICAgICAgIHN0ZDo6bWF4KGFjY3VtLmZOb3J0aE1vc3QsIHRvY29tYmluZS5mTm9ydGhNb3N0KSwKICAgICAgICBzdGQ6Om1pbihhY2N1bS5mU291dGhNb3N0LCB0b2NvbWJpbmUuZlNvdXRoTW9zdCksCiAgICAgICAgc3RkOjptaW4oYWNjdW0uZldlc3RNb3N0LCAgdG9jb21iaW5lLmZXZXN0TW9zdCksCiAgICAgICAgc3RkOjptYXgoYWNjdW0uZkVhc3RNb3N0LCAgdG9jb21iaW5lLmZFYXN0TW9zdCkKICAgIH07CiAgICByZXR1cm4gY29tYmluZWQ7Cn0KCmludCBtYWluKCkKewogICAgY29uc3QgR0VPR1JBUEhJQ19SRUdJT04gcmVnaW9uc1tdID0gCiAgICB7CiAgICAgICAgeyAyLC0xLC0xLDEgfSwKICAgICAgICB7IDEsLTIsLTEsMSB9LAogICAgICAgIHsgMSwtMSwtMiwxIH0sCiAgICAgICAgeyAxLC0xLC0xLDIgfSwKICAgIH07CgogICAgR0VPR1JBUEhJQ19SRUdJT04gc3VwZXIgPSBzdGQ6OmFjY3VtdWxhdGUocmVnaW9ucywgcmVnaW9ucys0LCByZWdpb25zWzBdLCBjb21iaW5lKTsKCiAgICBzdGQ6OmNvdXQgPDwgInsgIiA8PCBzdXBlci5mTm9ydGhNb3N0IDw8ICIsICIgCiAgICAgICAgICAgICAgICAgICAgICA8PCBzdXBlci5mU291dGhNb3N0IDw8ICIsICIKICAgICAgICAgICAgICAgICAgICAgIDw8IHN1cGVyLmZXZXN0TW9zdCA8PCAiLCAiCiAgICAgICAgICAgICAgICAgICAgICA8PCBzdXBlci5mRWFzdE1vc3QgPDwgIiB9IiA8PCBzdGQ6OmVuZGw7Cn0K