#include <iostream>
#include <type_traits>
#include <vector>
#include <map>
using namespace std;
template<typename T>
auto sum(const T& t, size_t n)
{
std::remove_const_t<std::remove_reference_t<decltype(*begin(T{}))>> result{};
size_t i = 0;
for (auto&& x : t)
{
if (i++ >= n) break;
result += x;
}
return result;
}
template<typename K, typename V>
auto sum(const std::map<K, V>& t, size_t n)
{
V result{};
size_t i = 0;
for (auto&& x : t)
{
if (i++ >= n) break;
result += x.second;
}
return result;
}
int main() {
vector<int> ints = {1, 2, 3, 4};
cout << sum(ints, 2) << "\n";
vector<string> strings = {"ala", " ", "ma ", "kota" };
cout << sum(strings, 3) << "\n";
map<string, int> pairs = {{"1", 1}, {"2", 2}};
cout << sum(pairs, 2) << "\n";
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dHlwZV90cmFpdHM+CiNpbmNsdWRlIDx2ZWN0b3I+CiNpbmNsdWRlIDxtYXA+CnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgphdXRvIHN1bShjb25zdCBUJiB0LCBzaXplX3QgbikKewoJc3RkOjpyZW1vdmVfY29uc3RfdDxzdGQ6OnJlbW92ZV9yZWZlcmVuY2VfdDxkZWNsdHlwZSgqYmVnaW4oVHt9KSk+PiByZXN1bHR7fTsKCXNpemVfdCBpID0gMDsKCWZvciAoYXV0byYmIHggOiB0KSAKCXsKCQlpZiAoaSsrID49IG4pIGJyZWFrOwoJCXJlc3VsdCArPSB4OwoJfQoJcmV0dXJuIHJlc3VsdDsKfQoKdGVtcGxhdGU8dHlwZW5hbWUgSywgdHlwZW5hbWUgVj4KYXV0byBzdW0oY29uc3Qgc3RkOjptYXA8SywgVj4mIHQsIHNpemVfdCBuKQp7CglWIHJlc3VsdHt9OwoJc2l6ZV90IGkgPSAwOwoJZm9yIChhdXRvJiYgeCA6IHQpIAoJewoJCWlmIChpKysgPj0gbikgYnJlYWs7CgkJcmVzdWx0ICs9IHguc2Vjb25kOwoJfQoJcmV0dXJuIHJlc3VsdDsKfQoKaW50IG1haW4oKSB7Cgl2ZWN0b3I8aW50PiBpbnRzID0gezEsIDIsIDMsIDR9OwoJY291dCA8PCBzdW0oaW50cywgMikgPDwgIlxuIjsKCXZlY3RvcjxzdHJpbmc+IHN0cmluZ3MgPSB7ImFsYSIsICIgIiwgIm1hICIsICJrb3RhIiB9OwoJY291dCA8PCBzdW0oc3RyaW5ncywgMykgPDwgIlxuIjsKCgltYXA8c3RyaW5nLCBpbnQ+IHBhaXJzID0ge3siMSIsIDF9LCB7IjIiLCAyfX07Cgljb3V0IDw8IHN1bShwYWlycywgMikgPDwgIlxuIjsKCXJldHVybiAwOwp9