1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 | #include <iostream> #include <iterator> #include <algorithm> int* createSumArray(int* arr, int size) { int ti = 0; // target index int* ta = new int[size*(size+1)/2]; for (int s = 1; s <= size; ++s) // how many elements to sum { for (int si = 0; si < size + 1 - s; ++si) { ta[ti] = 0; for (int i = si; i < si + s; ++i) ta[ti] += arr[i]; ++ti; } } return ta; } void test(int* a, size_t N) { std::copy(a, a + N, std::ostream_iterator<int>(std::cout, ",")); std::cout << "\n"; int* ret = createSumArray(a, N); std::copy(ret, ret + N*(N+1)/2, std::ostream_iterator<int>(std::cout, ",")); std::cout << "\n"; delete [] ret; } int main() { { int a[] = {1}; test(a, sizeof(a)/sizeof(*a)); } { int a[] = {1,3,4,5}; test(a, sizeof(a)/sizeof(*a)); } { int a[] = {1,2,3,4,5,6,7,8,9,10}; test(a, sizeof(a)/sizeof(*a)); } } |
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8aXRlcmF0b3I+CiNpbmNsdWRlIDxhbGdvcml0aG0+CgppbnQqIGNyZWF0ZVN1bUFycmF5KGludCogYXJyLCBpbnQgc2l6ZSkKewogICBpbnQgdGkgPSAwOyAvLyB0YXJnZXQgaW5kZXgKICAgaW50KiB0YSA9IG5ldyBpbnRbc2l6ZSooc2l6ZSsxKS8yXTsKICAgZm9yIChpbnQgcyA9IDE7IHMgPD0gc2l6ZTsgKytzKSAvLyBob3cgbWFueSBlbGVtZW50cyB0byBzdW0KICAgewogICAgICBmb3IgKGludCBzaSA9IDA7IHNpIDwgc2l6ZSArIDEgLSBzOyArK3NpKQogICAgICB7CiAgICAgICAgICB0YVt0aV0gPSAwOwogICAgICAgICAgZm9yIChpbnQgaSA9IHNpOyBpIDwgc2kgKyBzOyArK2kpCiAgICAgICAgICAgIHRhW3RpXSArPSBhcnJbaV07CiAgICAgICAgICArK3RpOwogICAgICB9IAogICB9CiAgIHJldHVybiB0YTsKfQoKdm9pZCB0ZXN0KGludCogYSwgc2l6ZV90IE4pCnsKICBzdGQ6OmNvcHkoYSwgYSArIE4sIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxpbnQ+KHN0ZDo6Y291dCwgIiwiKSk7CiAgc3RkOjpjb3V0IDw8ICJcbiI7CiAgaW50KiByZXQgPSBjcmVhdGVTdW1BcnJheShhLCBOKTsKICBzdGQ6OmNvcHkocmV0LCByZXQgKyBOKihOKzEpLzIsIHN0ZDo6b3N0cmVhbV9pdGVyYXRvcjxpbnQ+KHN0ZDo6Y291dCwgIiwiKSk7CiAgc3RkOjpjb3V0IDw8ICJcbiI7CiAgZGVsZXRlIFtdIHJldDsKfQoKaW50IG1haW4oKSB7CiAgewogICAgaW50IGFbXSA9IHsxfTsKICAgIHRlc3QoYSwgc2l6ZW9mKGEpL3NpemVvZigqYSkpOwogIH0KICB7CiAgICBpbnQgYVtdID0gezEsMyw0LDV9OwogICAgdGVzdChhLCBzaXplb2YoYSkvc2l6ZW9mKCphKSk7CiAgfQogIHsKICAgIGludCBhW10gPSB7MSwyLDMsNCw1LDYsNyw4LDksMTB9OwogICAgdGVzdChhLCBzaXplb2YoYSkvc2l6ZW9mKCphKSk7CiAgfQp9
-
upload with new input
-
result: Success time: 0s memory: 3016 kB returned value: 0
1, 1, 1,3,4,5, 1,3,4,5,4,7,9,8,12,13, 1,2,3,4,5,6,7,8,9,10, 1,2,3,4,5,6,7,8,9,10,3,5,7,9,11,13,15,17,19,6,9,12,15,18,21,24,27,10,14,18,22,26,30,34,15,20,25,30,35,40,21,27,33,39,45,28,35,42,49,36,44,52,45,54,55,


