#include <iostream>
#include <vector>
using namespace std;
// Write an efficient C program to find the sum of contiguous
// subarray within a one-dimensional array of numbers which has the largest sum.
#define MAX_COINS 1000
int maxSubArray(vector<int > &data )
{
}
#define MIN_NUM 0xffff
int maxSubArrayDP(vector<int > &data )
{
// dynamic programming
int i;
int max = 0;
int max_now = 0;
for (i = 0; i < data.size(); i++)
{
max_now += data[i];
max_now = (max_now >0)? max_now:0;
if (max < max_now)
max = max_now;
}
return max;
}
int main() {
// your code goes here
vector<int> a = {-2, -3, 4, -1, -2, 1, 5, -3};
cout << maxSubArrayDP(a) << endl;
return 0;
}
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKdXNpbmcgbmFtZXNwYWNlIHN0ZDsKCi8vIFdyaXRlIGFuIGVmZmljaWVudCBDIHByb2dyYW0gdG8gZmluZCB0aGUgc3VtIG9mIGNvbnRpZ3VvdXMgCi8vIHN1YmFycmF5IHdpdGhpbiBhIG9uZS1kaW1lbnNpb25hbCBhcnJheSBvZiBudW1iZXJzIHdoaWNoIGhhcyB0aGUgbGFyZ2VzdCBzdW0uCiNkZWZpbmUgTUFYX0NPSU5TCTEwMDAKaW50IG1heFN1YkFycmF5KHZlY3RvcjxpbnQgPiAmZGF0YSApCnsKCQp9CgojZGVmaW5lIE1JTl9OVU0gMHhmZmZmCmludCBtYXhTdWJBcnJheURQKHZlY3RvcjxpbnQgPiAmZGF0YSApCnsKCS8vIGR5bmFtaWMgcHJvZ3JhbW1pbmcKCWludCBpOwoJaW50IG1heCA9IDA7CglpbnQgbWF4X25vdyAgPSAwOwoJCglmb3IgKGkgPSAwOyBpIDwgZGF0YS5zaXplKCk7IGkrKykKCXsKCQltYXhfbm93ICs9IGRhdGFbaV07CgkJbWF4X25vdyA9IChtYXhfbm93ID4wKT8gbWF4X25vdzowOwoJCQoJCWlmIChtYXggPCBtYXhfbm93KQoJCQltYXggPSBtYXhfbm93OwoJfQkKCXJldHVybiBtYXg7Cn0KCmludCBtYWluKCkgewoJLy8geW91ciBjb2RlIGdvZXMgaGVyZQoJdmVjdG9yPGludD4gYSA9IHstMiwgLTMsIDQsIC0xLCAtMiwgMSwgNSwgLTN9OwoJCgljb3V0IDw8IG1heFN1YkFycmF5RFAoYSkgPDwgZW5kbDsKCQoJcmV0dXJuIDA7Cn0=