#include <chrono>
#include <iostream>
#include <vector>
int main( int argc, char ** )
{
const auto t_0 = std:: chrono :: high_resolution_clock :: now ( ) ;
std:: vector < int > v( argc * 1000 * 1000 , 0 ) ;
const auto t_1 = std:: chrono :: high_resolution_clock :: now ( ) ;
std:: vector < int * > pv( argc * 1000 * 1000 , nullptr) ;
for ( auto & e : pv )
{
e = new int ( 0 ) ;
}
const auto t_2 = std:: chrono :: high_resolution_clock :: now ( ) ;
auto rv = [ & ] ( )
{
int sum = 0 ;
for ( const auto & e : v )
{
sum + = e;
}
return sum;
} ( ) ;
const auto t_3 = std:: chrono :: high_resolution_clock :: now ( ) ;
auto rpv = [ & ] ( )
{
int sum = 0 ;
for ( const auto & e : pv )
{
sum + = * e;
}
return sum;
} ( ) ;
const auto t_4 = std:: chrono :: high_resolution_clock :: now ( ) ;
for ( auto & e : pv )
{
delete e;
}
const auto t_5 = std:: chrono :: high_resolution_clock :: now ( ) ;
std:: cout << ( t_1 - t_0) .count ( ) << " for construction of v\n "
<< ( t_3 - t_2) .count ( ) << " for sum of v\n "
<< ( t_3 - t_2) .count ( ) + ( t_1 - t_0) .count ( ) << " in total for v\n "
<< ( t_2 - t_1) .count ( ) << " for construction of pv\n "
<< ( t_4 - t_3) .count ( ) << " for sum of pv\n "
<< ( t_5 - t_4) .count ( ) << " for destruction of pv\n "
<< ( t_2 - t_1) .count ( ) + ( t_4 - t_3) .count ( ) + ( t_5 - t_4) .count ( ) << " in total for pv\n " ;
return rpv - rv;
}
I2luY2x1ZGUgPGNocm9ubz4KI2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKikKewoJY29uc3QgYXV0byB0XzAgPSBzdGQ6OmNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKCXN0ZDo6dmVjdG9yPGludD4gdihhcmdjICogMTAwMCAqIDEwMDAsIDApOwoJY29uc3QgYXV0byB0XzEgPSBzdGQ6OmNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKCXN0ZDo6dmVjdG9yPGludCo+IHB2KGFyZ2MgKiAxMDAwICogMTAwMCwgbnVsbHB0cik7Cglmb3IgKCAgYXV0byYgZSA6IHB2ICkKCXsKCQllID0gbmV3IGludCgwKTsKCX0KCWNvbnN0IGF1dG8gdF8yID0gc3RkOjpjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CglhdXRvIHJ2ID0gWyZdKCkKCXsKCQlpbnQgc3VtID0gMDsKCQlmb3IgKCBjb25zdCBhdXRvJiBlIDogdiApCgkJewoJCQlzdW0gKz0gZTsKCQl9CgkJcmV0dXJuIHN1bTsKCX0oKTsKCWNvbnN0IGF1dG8gdF8zID0gc3RkOjpjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7CglhdXRvIHJwdiA9IFsmXSgpCgl7CgkJaW50IHN1bSA9IDA7CgkJZm9yICggY29uc3QgYXV0byYgZSA6IHB2ICkKCQl7CgkJCXN1bSArPSAqZTsKCQl9CgkJcmV0dXJuIHN1bTsKCX0oKTsKCWNvbnN0IGF1dG8gdF80ID0gc3RkOjpjaHJvbm86OmhpZ2hfcmVzb2x1dGlvbl9jbG9jazo6bm93KCk7Cglmb3IgKCBhdXRvJiBlIDogcHYgKQoJewoJCWRlbGV0ZSBlOwoJfQoJY29uc3QgYXV0byB0XzUgPSBzdGQ6OmNocm9ubzo6aGlnaF9yZXNvbHV0aW9uX2Nsb2NrOjpub3coKTsKCXN0ZDo6Y291dCA8PCAodF8xIC0gdF8wKS5jb3VudCgpIDw8ICIgZm9yIGNvbnN0cnVjdGlvbiBvZiB2XG4iCgkgICAgICAgICAgPDwgKHRfMyAtIHRfMikuY291bnQoKSA8PCAiIGZvciBzdW0gb2YgdlxuIgoJICAgICAgICAgIDw8ICh0XzMgLSB0XzIpLmNvdW50KCkgKyAodF8xIC0gdF8wKS5jb3VudCgpIDw8ICIgaW4gdG90YWwgZm9yIHZcbiIKCSAgICAgICAgICA8PCAodF8yIC0gdF8xKS5jb3VudCgpIDw8ICIgZm9yIGNvbnN0cnVjdGlvbiBvZiBwdlxuIgoJICAgICAgICAgIDw8ICh0XzQgLSB0XzMpLmNvdW50KCkgPDwgIiBmb3Igc3VtIG9mIHB2XG4iCgkgICAgICAgICAgPDwgKHRfNSAtIHRfNCkuY291bnQoKSA8PCAiIGZvciBkZXN0cnVjdGlvbiBvZiBwdlxuIgoJICAgICAgICAgIDw8ICh0XzIgLSB0XzEpLmNvdW50KCkgKyAodF80IC0gdF8zKS5jb3VudCgpICsgKHRfNSAtIHRfNCkuY291bnQoKSA8PCAiIGluIHRvdGFsIGZvciBwdlxuIjsKCXJldHVybiBycHYgLSBydjsKfQ==