#include<iostream>
#include<vector>
using namespace std;
template <typename T, size_t N >
char ( &_ArraySizeHelper( T (&arr)[N] ))[N];
#define countof( arr ) (sizeof( _ArraySizeHelper( arr ) ))
template< size_t N >
inline double MyFunction( double (&x)[N] ) {
int M = countof(x);
double s = 0.0;
for ( int i = 0; i < M; i++ ) {
s += x[i];
}
return s;
}
template< size_t N >
double BigFunction( double (* PtrFunc)( double (&)[N] ),
const vector<int>& v ) {
int M = v.size();
double x[N];
for( int i = 0; i < M; i++ ) {
x[i] = 1.0;
}
double z = (* PtrFunc)( x );
return z;
}
int main() {
vector<int> v;
for(int i = 0; i < 10; i++) {
v.push_back(i);
}
double w = BigFunction< 10 >( &MyFunction, v );
cout << w << endl;
return 0;
}
I2luY2x1ZGU8aW9zdHJlYW0+CiNpbmNsdWRlPHZlY3Rvcj4KCnVzaW5nIG5hbWVzcGFjZSBzdGQ7Cgp0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwgc2l6ZV90IE4gPgpjaGFyICggJl9BcnJheVNpemVIZWxwZXIoIFQgKCZhcnIpW05dICkpW05dOwojZGVmaW5lIGNvdW50b2YoIGFyciApIChzaXplb2YoIF9BcnJheVNpemVIZWxwZXIoIGFyciApICkpCgp0ZW1wbGF0ZTwgc2l6ZV90IE4gPgppbmxpbmUgZG91YmxlIE15RnVuY3Rpb24oIGRvdWJsZSAoJngpW05dICkgewogICAgaW50IE0gPSBjb3VudG9mKHgpOwogICAgZG91YmxlIHMgPSAwLjA7CiAgICBmb3IgKCBpbnQgaSA9IDA7IGkgPCBNOyBpKysgKSB7CiAgICAgICAgcyArPSB4W2ldOwogICAgfQogICAgcmV0dXJuIHM7Cn0KCnRlbXBsYXRlPCBzaXplX3QgTiA+CmRvdWJsZSBCaWdGdW5jdGlvbiggZG91YmxlICgqIFB0ckZ1bmMpKCBkb3VibGUgKCYpW05dICksIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdmVjdG9yPGludD4mIHYgKSB7CiAgICBpbnQgTSA9IHYuc2l6ZSgpOwogICAgZG91YmxlIHhbTl07CiAgICBmb3IoIGludCBpID0gMDsgaSA8IE07IGkrKyApIHsKICAgICAgICB4W2ldID0gMS4wOwogICAgfQogICAgZG91YmxlIHogPSAoKiBQdHJGdW5jKSggeCApOwogICAgcmV0dXJuIHo7Cn0KCmludCBtYWluKCkgewogICAgdmVjdG9yPGludD4gdjsKICAgIGZvcihpbnQgaSA9IDA7IGkgPCAxMDsgaSsrKSB7CiAgICAgICAgdi5wdXNoX2JhY2soaSk7CiAgICB9CiAgICBkb3VibGUgdyA9IEJpZ0Z1bmN0aW9uPCAxMCA+KCAmTXlGdW5jdGlvbiwgdiApOwogICAgY291dCA8PCB3IDw8IGVuZGw7CiAgICByZXR1cm4gMDsKfQoK