c++ - "Disallowed system call: SYS_socketcall" when I try to solve the "sum the largest n integers in the array" programming challenge -
i'm trying come solution
sum n largest integers in array of integers every integer between 0 , 9
int sumnlargest(int* andata, int size, int n)
programming challenge prompt, solution other obvious 1 of sorting copy of array , returning sum of last 9 elements.so tried writing linear solution below
#include <iostream> int sumnlargest(int* andata, int size, int n) { // sum n largest integers in array of integers every integer between 0 , 9 int cntarr [] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; (int = 0; < size; ++i) ++cntarr[andata[i]]; int sum = 0; (int = size - 1; >= 0; --i) { sum += (n - cntarr[i]) >= 0 ? cntarr[i] * : n * i; --n; if (n <= 0) break; } return sum; } int main() { int myarray [] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 11, 11, 12, 15}; std::cout << sumnlargest(myarray, sizeof(myarray)/sizeof(int), 2); return 0; }
but i'm getting error
disallowed system call: sys_socketcall
see: http://codepad.org/uilgxdzq
is problem logic? if so, where? also, there more elegant linear solution should've done instead?
(and finally, realize solution assumes n >= size >= 1
, think typical programming interview allows me make assumption don't have waste time writing bunch of error handling unexpected input)
your code invokes undefined behavior at
(int = 0; < size; ++i) ++cntarr[andata[i]];
when access eleventh element (i = 10
) because cntarr
has 10 elements.
memory checker such addresssanitizer indicate immediately.
you're not calling system call create new socket but, result of undefined behavior, happen.
Comments
Post a Comment