fork download
  1. #include <iostream>
  2. using namespace std;
  3. long int m, now, n, p, i, ch;
  4. int main(void)
  5. {
  6. cin >> n;//입력 받을 수는 n개
  7. for (i = 0; i < n; i++)
  8. {
  9. cin >> p;//i+1번째 수를 입력받음
  10. if (i == 0)//첫 수일 경우
  11. {
  12. m = p;//최댓값은 p
  13. now = p;//현재 합 값도 p
  14. continue;
  15. }
  16. if (ch == 1 && p + now > 0)//한 번이라도 양수가 나온 적이 있으며, 현재 수를 더했을 때 양수가 된다면
  17. now += p;//현재 합 값은 p를 추가한 값
  18. else
  19. {
  20. now = p;//이외에는 p를 현재 합 값으로
  21. if (ch == 0 && now > 0)
  22. ch = 1;//현재 합이 0 이상이라는 것은 양수가 한 번이라도 나왔다는 뜻. ch가 0이면 나온 적이 없다는 뜻
  23. }
  24. m = (m > now ? m : now) > p ? (m > now ? m : now) : p;//이전 now 값이 음수여서 p 값이 현 최댓값일 수 있음.
  25. }
  26. cout << m << endl;//최댓값 출력
  27. return 0;
  28. }
Success #stdin #stdout 0s 4520KB
stdin
2
1 1
stdout
1