#include <iostream>
#include <functional>
#include <utility>
#include <memory>
#include <map>
std::size_t amount = 0;
template<typename T>
struct my_allocator : std::allocator<T> {
template<typename U>
struct rebind {
typedef my_allocator<U> other;
};
typename std::allocator<T>::pointer allocate(std::size_t const n, std::allocator<void>::const_pointer const hint = 0) {
amount += n * sizeof (T);
return std::allocator<T>::allocate(n, hint);
}
};
int main() {
std::map<int, int, std::less<int>, my_allocator<std::pair<int const, int> > > map;
for (std::size_t i = 0; i != 10000; ++i) {
map.insert(std::make_pair(i, i));
}
std::cout << amount << std::endl;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8ZnVuY3Rpb25hbD4KI2luY2x1ZGUgPHV0aWxpdHk+CiNpbmNsdWRlIDxtZW1vcnk+CiNpbmNsdWRlIDxtYXA+CgoKc3RkOjpzaXplX3QgYW1vdW50ID0gMDsKCgp0ZW1wbGF0ZTx0eXBlbmFtZSBUPgpzdHJ1Y3QgbXlfYWxsb2NhdG9yIDogc3RkOjphbGxvY2F0b3I8VD4gewoJCiAgIHRlbXBsYXRlPHR5cGVuYW1lIFU+CiAgIHN0cnVjdCByZWJpbmQgewogICAJCiAgICAgIHR5cGVkZWYgbXlfYWxsb2NhdG9yPFU+IG90aGVyOwogICB9OwoKICAgdHlwZW5hbWUgc3RkOjphbGxvY2F0b3I8VD46OnBvaW50ZXIgYWxsb2NhdGUoc3RkOjpzaXplX3QgY29uc3Qgbiwgc3RkOjphbGxvY2F0b3I8dm9pZD46OmNvbnN0X3BvaW50ZXIgY29uc3QgaGludCA9IDApIHsKICAgICAgYW1vdW50ICs9IG4gKiBzaXplb2YgKFQpOwogICAgICByZXR1cm4gc3RkOjphbGxvY2F0b3I8VD46OmFsbG9jYXRlKG4sIGhpbnQpOwogICB9Cn07CgoKaW50IG1haW4oKSB7CiAgIHN0ZDo6bWFwPGludCwgaW50LCBzdGQ6Omxlc3M8aW50PiwgbXlfYWxsb2NhdG9yPHN0ZDo6cGFpcjxpbnQgY29uc3QsIGludD4gPiA+IG1hcDsKCiAgIGZvciAoc3RkOjpzaXplX3QgaSA9IDA7IGkgIT0gMTAwMDA7ICsraSkgewogICAgICBtYXAuaW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKGksIGkpKTsKICAgfSAgIAoKICAgc3RkOjpjb3V0IDw8IGFtb3VudCA8PCBzdGQ6OmVuZGw7Cn0=