만드는 중입니다

아직 만드는 중이라 바뀔 수 있습니다

장난감 섞기

면접 대비

시간 제한1초메모리 제한256 MB

요약
길이가 같은 N개의 수열을 순서대로 이어 붙일 때 만들 수 있는 최대 부분합의 최댓값을 구합니다.
난이도

보통10점 중 6점

유형
동적 계획법, 비트 연산, 누적 합
정답자
아직 제출이 없습니다

문제

랑이 집사는 랑이와 메리의 조기 교육을 위해 NN개의 수열을 주문했다.

각 수열의 길이는 MM으로 모두 같지만, 수열을 구성하는 수는 수열마다 다를 수 있다. 주문한 수열은 모두 완제품이라 임의로 나누거나 수정할 수 없고, 수열의 순서만 자유롭게 정할 수 있다.

수열의 최대 연속합은 그 수열에서 연속된 수를 골라 더했을 때 얻을 수 있는 합 중 가장 큰 값이다. 아무 수도 고르지 않는 경우도 허용하며, 이때의 연속합은 00으로 정의한다.

랑이와 메리는 수열의 최대 연속합이 클수록 그 수열에 더 흥미를 느낀다.

랑이 집사는 가장 흥미로운 수열을 만들려고 NN개의 수열을 원하는 순서로 이어 붙여 하나의 긴 수열을 만들려고 한다. 가능한 모든 순서 중에서 최대 연속합이 가장 큰 값을 구하는 프로그램을 작성하시오.

입력

첫 줄에 NN과 MM이 공백으로 구분되어 주어진다. (1≤N≤101 \le N \le 10, 1≤M≤10,0001 \le M \le 10,000)

둘째 줄부터 NN줄에 걸쳐 각 수열이 한 줄에 하나씩 주어진다. 수열의 수는 −100-100 이상 100100 이하의 정수이다.

출력

랑이 집사가 수열을 배치해서 만들 수 있는 최대 연속합 중 가장 큰 값을 출력한다.

예제1

  1. 예제 1

    입력
    3 5
    5 5 5 5 5
    -10 -10 -10 5 5
    5 5 -10 -10 -10
    
    예상 출력
    45