시간 제한메모리 제한제출정답맞힌 사람정답 비율
1 초 1024 MB22141365.000%

문제

이 문제는 출근하기 싫어 1굵은 글씨로 적힌 부분과 제한 조건만 다릅니다.

누구나 그렇듯 동우는 출근하기 싫다. 그래도 출근해야 한다.

동우가 다니는 회사는 신기한 회사이다. 총 $N$명의 직원이 있는데, 이 중 최대 $2$명이 출근하지 않아도 업무를 정상적으로 진행할 수 있다. 하지만 $2$명보다 많이 출근하지 않으면 업무를 정상적으로 진행할 수 없다.

동우는 회사의 업무가 정상적으로 진행되는 것이 신기해 현재 시각으로부터 최근 $M$시간 동안 $N$명의 직원 각각이 총 몇 시간씩 출근했는지 살펴보았다.

직원들은 모두 정각에만 출근해 정각에만 퇴근하며, 한 사람이 여러 번 출근 혹은 퇴근할 수 있다. 최근 $M$시간 동안 업무를 계속 정상적으로 진행할 수 있도록 하는, $N$명의 직원이 출근한 조합의 경우의 수를 구하시오.

이때, $M$시간에 대해 매시 30분을 기준으로 출근해 있는 직원들의 목록이 한 번이라도 다른 경우 서로 다른 조합으로 간주한다. 현재는 정각이라 가정한다.

입력

첫 번째 줄에 직원의 수 $N$과 동우가 살펴본 최근 시간의 길이를 나타내는 정수 $M$이 공백으로 구분되어 주어진다. $(1\le N, M\le 5\,000)$

두 번째 줄에 $N$명의 직원이 최근 $M$시간 동안 출근한 시간 $A_1, A_2, \cdots, A_N$이 공백으로 구분되어 주어진다. $(0\le A_i \le M)$

출력

직원이 출근한 조합으로 가능한 경우의 수를 $10^9+7$로 나눈 나머지를 출력한다.

단, $10^9+7$은 소수이다.

서브태스크

번호배점제한
122

$N\times M \le 20$

251

$N, M \le 100$

370

$N, M \le 500$

4107

추가적인 제한 조건 없음

예제 입력 1

2 4
3 3

예제 출력 1

16

예제 입력 2

3 4
4 3 3

예제 출력 2

16

예제 입력 3

3 5
1 1 2

예제 출력 3

0

예제 입력 4

2 4
2 2

예제 출력 4

36

예제 입력 5

3 5
4 3 4

예제 출력 5

230

예제 입력 6

3 5
3 3 3

예제 출력 6

690

예제 입력 7

2 10
5 7

예제 출력 7

30240
W3sicHJvYmxlbV9pZCI6IjMxNTM4IiwicHJvYmxlbV9sYW5nIjoiMCIsInRpdGxlIjoiXHVjZDljXHVhZGZjXHVkNTU4XHVhZTMwIFx1YzJlYlx1YzViNCAyIiwiZGVzY3JpcHRpb24iOiI8YmxvY2txdW90ZT5cclxuPHA+XHVjNzc0IFx1YmIzOFx1YzgxY1x1YjI5NCA8YSBocmVmPVwiXC9wcm9ibGVtXC8zMTUzN1wiPlx1Y2Q5Y1x1YWRmY1x1ZDU1OFx1YWUzMCBcdWMyZWJcdWM1YjQgMTxcL2E+XHVhY2ZjIDxzdHJvbmc+XHVhZDc1XHVjNzQwPFwvc3Ryb25nPiBcdWFlMDBcdWM1MjhcdWI4NWMgXHVjODAxXHVkNzhjIFx1YmQ4MFx1YmQ4NFx1YWNmYyBcdWM4MWNcdWQ1NWMgXHVjODcwXHVhYzc0XHViOWNjIFx1YjJlNFx1Yjk4NVx1YjJjOFx1YjJlNC48XC9wPlxyXG48XC9ibG9ja3F1b3RlPlxyXG5cclxuPHA+XHViMjA0XHVhZDZjXHViMDk4IFx1YWRmOFx1YjgwN1x1YjRlZiBcdWIzZDlcdWM2YjBcdWIyOTQgXHVjZDljXHVhZGZjXHVkNTU4XHVhZTMwIFx1YzJlYlx1YjJlNC4gXHVhZGY4XHViNzk4XHViM2M0IFx1Y2Q5Y1x1YWRmY1x1ZDU3NFx1YzU3YyBcdWQ1NWNcdWIyZTQuPFwvcD5cclxuXHJcbjxwPlx1YjNkOVx1YzZiMFx1YWMwMCBcdWIyZTRcdWIyYzhcdWIyOTQgXHVkNjhjXHVjMGFjXHViMjk0IFx1YzJlMFx1YWUzMFx1ZDU1YyBcdWQ2OGNcdWMwYWNcdWM3NzRcdWIyZTQuIFx1Y2QxZCAkTiRcdWJhODVcdWM3NTggXHVjOWMxXHVjNmQwXHVjNzc0IFx1Yzc4OFx1YjI5NFx1YjM3MCwgXHVjNzc0IFx1YzkxMSA8c3Ryb25nPlx1Y2Q1Y1x1YjMwMCAkMiRcdWJhODU8XC9zdHJvbmc+XHVjNzc0IFx1Y2Q5Y1x1YWRmY1x1ZDU1OFx1YzljMCBcdWM1NGFcdWM1NDRcdWIzYzQgXHVjNWM1XHViYjM0XHViOTdjIFx1YzgxNVx1YzBjMVx1YzgwMVx1YzczY1x1Yjg1YyBcdWM5YzRcdWQ1ODlcdWQ1NjAgXHVjMjE4IFx1Yzc4OFx1YjJlNC4gXHVkNTU4XHVjOWMwXHViOWNjIDxzdHJvbmc+JDIkXHViYTg1XHViY2Y0XHViMmU0PFwvc3Ryb25nPiBcdWI5Y2VcdWM3NzQgXHVjZDljXHVhZGZjXHVkNTU4XHVjOWMwIFx1YzU0YVx1YzczY1x1YmE3NCBcdWM1YzVcdWJiMzRcdWI5N2MgXHVjODE1XHVjMGMxXHVjODAxXHVjNzNjXHViODVjIFx1YzljNFx1ZDU4OVx1ZDU2MCBcdWMyMTggXHVjNWM2XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWIzZDlcdWM2YjBcdWIyOTQgXHVkNjhjXHVjMGFjXHVjNzU4IFx1YzVjNVx1YmIzNFx1YWMwMCBcdWM4MTVcdWMwYzFcdWM4MDFcdWM3M2NcdWI4NWMgXHVjOWM0XHVkNTg5XHViNDE4XHViMjk0IFx1YWM4M1x1Yzc3NCBcdWMyZTBcdWFlMzBcdWQ1NzQgXHVkNjA0XHVjN2FjIFx1YzJkY1x1YWMwMVx1YzczY1x1Yjg1Y1x1YmQ4MFx1ZDEzMCBcdWNkNWNcdWFkZmMgJE0kXHVjMmRjXHVhYzA0IFx1YjNkOVx1YzU0OCAkTiRcdWJhODVcdWM3NTggXHVjOWMxXHVjNmQwIFx1YWMwMVx1YWMwMVx1Yzc3NCBcdWNkMWQgXHViYTg3IFx1YzJkY1x1YWMwNFx1YzUyOSBcdWNkOWNcdWFkZmNcdWQ1ODhcdWIyOTRcdWM5YzAgXHVjMGI0XHVkM2I0XHViY2Y0XHVjNTU4XHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWM5YzFcdWM2ZDBcdWI0ZTRcdWM3NDAgXHViYWE4XHViNDUwIFx1YzgxNVx1YWMwMVx1YzVkMFx1YjljYyBcdWNkOWNcdWFkZmNcdWQ1NzQgXHVjODE1XHVhYzAxXHVjNWQwXHViOWNjIFx1ZDFmNFx1YWRmY1x1ZDU1OFx1YmE3MCwgXHVkNTVjIFx1YzBhY1x1Yjc4Y1x1Yzc3NCBcdWM1ZWNcdWI3ZWMgXHViYzg4IFx1Y2Q5Y1x1YWRmYyBcdWQ2MzlcdWM3NDAgXHVkMWY0XHVhZGZjXHVkNTYwIFx1YzIxOCBcdWM3ODhcdWIyZTQuIFx1Y2Q1Y1x1YWRmYyAkTSRcdWMyZGNcdWFjMDQgXHViM2Q5XHVjNTQ4IFx1YzVjNVx1YmIzNFx1Yjk3YyBcdWFjYzRcdWMxOGQgXHVjODE1XHVjMGMxXHVjODAxXHVjNzNjXHViODVjIFx1YzljNFx1ZDU4OVx1ZDU2MCBcdWMyMTggXHVjNzg4XHViM2M0XHViODVkIFx1ZDU1OFx1YjI5NCwgJE4kXHViYTg1XHVjNzU4IFx1YzljMVx1YzZkMFx1Yzc3NCBcdWNkOWNcdWFkZmNcdWQ1NWMgXHVjODcwXHVkNTY5XHVjNzU4IFx1YWNiZFx1YzZiMFx1Yzc1OCBcdWMyMThcdWI5N2MgXHVhZDZjXHVkNTU4XHVjMmRjXHVjNjI0LjxcL3A+XHJcblxyXG48cD5cdWM3NzRcdWI1NGMsICRNJFx1YzJkY1x1YWMwNFx1YzVkMCBcdWIzMDBcdWQ1NzQgXHViOWU0XHVjMmRjIDMwXHViZDg0XHVjNzQ0IFx1YWUzMFx1YzkwMFx1YzczY1x1Yjg1YyBcdWNkOWNcdWFkZmNcdWQ1NzQgXHVjNzg4XHViMjk0IFx1YzljMVx1YzZkMFx1YjRlNFx1Yzc1OCBcdWJhYTlcdWI4NWRcdWM3NzQgXHVkNTVjIFx1YmM4OFx1Yzc3NFx1Yjc3Y1x1YjNjNCBcdWIyZTRcdWI5NzggXHVhY2JkXHVjNmIwIFx1YzExY1x1Yjg1YyBcdWIyZTRcdWI5NzggXHVjODcwXHVkNTY5XHVjNzNjXHViODVjIFx1YWMwNFx1YzhmY1x1ZDU1Y1x1YjJlNC4gXHVkNjA0XHVjN2FjXHViMjk0IFx1YzgxNVx1YWMwMVx1Yzc3NFx1Yjc3YyBcdWFjMDBcdWM4MTVcdWQ1NWNcdWIyZTQuPFwvcD5cclxuIiwiaW5wdXQiOiI8cD5cdWNjYWIgXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMCBcdWM5YzFcdWM2ZDBcdWM3NTggXHVjMjE4ICROJFx1YWNmYyBcdWIzZDlcdWM2YjBcdWFjMDAgXHVjMGI0XHVkM2I0XHViY2Y4IFx1Y2Q1Y1x1YWRmYyBcdWMyZGNcdWFjMDRcdWM3NTggXHVhZTM4XHVjNzc0XHViOTdjIFx1YjA5OFx1ZDBjMFx1YjBiNFx1YjI5NCBcdWM4MTVcdWMyMTggJE0kXHVjNzc0IFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM1YjQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAkKDFcXGxlIE4sIE1cXGxlIDVcXCwwMDApJDxcL3A+XHJcblxyXG48cD5cdWI0NTAgXHViYzg4XHVjOWY4IFx1YzkwNFx1YzVkMCAkTiRcdWJhODVcdWM3NTggXHVjOWMxXHVjNmQwXHVjNzc0IFx1Y2Q1Y1x1YWRmYyAkTSRcdWMyZGNcdWFjMDQgXHViM2Q5XHVjNTQ4IFx1Y2Q5Y1x1YWRmY1x1ZDU1YyBcdWMyZGNcdWFjMDQgJEFfMSwgQV8yLCBcXGNkb3RzLCBBX04kXHVjNzc0IFx1YWNmNVx1YmMzMVx1YzczY1x1Yjg1YyBcdWFkNmNcdWJkODRcdWI0MThcdWM1YjQgXHVjOGZjXHVjNWI0XHVjOWM0XHViMmU0LiAkKDBcXGxlIEFfaSBcXGxlIE0pJDxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPlx1YzljMVx1YzZkMFx1Yzc3NCBcdWNkOWNcdWFkZmNcdWQ1NWMgXHVjODcwXHVkNTY5XHVjNzNjXHViODVjIFx1YWMwMFx1YjJhNVx1ZDU1YyBcdWFjYmRcdWM2YjBcdWM3NTggXHVjMjE4XHViOTdjICQxMF45KzckXHViODVjIFx1YjA5OFx1YjIwOCBcdWIwOThcdWJhMzhcdWM5YzBcdWI5N2MgXHVjZDljXHViODI1XHVkNTVjXHViMmU0LjxcL3A+XHJcblxyXG48cD5cdWIyZTgsICQxMF45KzckXHVjNzQwIFx1YzE4Y1x1YzIxOFx1Yzc3NFx1YjJlNC48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIxIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJLb3JlYW4iLCJzdWJ0YXNrMSI6IjxwPiROXFx0aW1lcyBNIFxcbGUgMjAkPFwvcD5cclxuIiwic3VidGFzazIiOiI8cD4kTiwgTSBcXGxlIDEwMCQ8XC9wPlxyXG4iLCJzdWJ0YXNrMyI6IjxwPiROLCBNIFxcbGUgNTAwJDxcL3A+XHJcbiIsInN1YnRhc2s0IjoiPHA+XHVjZDk0XHVhYzAwXHVjODAxXHVjNzc4IFx1YzgxY1x1ZDU1YyBcdWM4NzBcdWFjNzQgXHVjNWM2XHVjNzRjPFwvcD5cclxuIn0seyJwcm9ibGVtX2lkIjoiMzE1MzgiLCJwcm9ibGVtX2xhbmciOiIxIiwidGl0bGUiOiJJIGRvblx1MjAxOXQgd2FubmEgZ28gdG8gd29yayAyIiwiZGVzY3JpcHRpb24iOiI8YmxvY2txdW90ZT5cclxuPHA+VGhpcyBwcm9ibGVtLCBjb21wYXJlZCB0byA8YSBocmVmPVwiXC9wcm9ibGVtXC8zMTUzN1wiPkkgZG9uJnJzcXVvO3Qgd2FubmEgZ28gdG8gd29yayAxPFwvYT4sIGlzIHRoZSBzYW1lIGV4Y2VwdCBmb3IgdGhlIDxzdHJvbmc+Ym9sZDxcL3N0cm9uZz4gcGFydHMgYW5kIHRoZSZuYnNwO2NvbnN0cmFpbnRzIG9mIHRoZSBwcm9ibGVtLjxcL3A+XHJcbjxcL2Jsb2NrcXVvdGU+XHJcblxyXG48cD5MaWtlIGV2ZXJ5b25lIGVsc2UsIERvbmd3b28gZG9lc24mcnNxdW87dCB3YW50IHRvIGdvIHRvIHdvcmsuIFN0aWxsLCBoZSBtdXN0LjxcL3A+XHJcblxyXG48cD5Eb25nd29vJnJzcXVvO3MgY29tcGFueSBpcyBhIHBlY3VsaWFyIG9uZS4gVGhlcmUgYXJlIGEgdG90YWwgb2YgJE4kIGVtcGxveWVlcywgYW5kIGV2ZW4gaWYgPHN0cm9uZz51cCB0byAkMiQ8XC9zdHJvbmc+IG9mIHRoZW0gZG9uJnJzcXVvO3QgY29tZSB0byB3b3JrLCB0aGUgY29tcGFueSBjYW4gc3RpbGwgY2Fycnkgb3V0IGl0cyBidXNpbmVzcyBub3JtYWxseS4gQnV0IGlmIDxzdHJvbmc+bW9yZSB0aGFuICQyJDxcL3N0cm9uZz4gcGVvcGxlJm5ic3A7ZG9uJnJzcXVvO3QgY29tZSB0byB3b3JrLCB0aGUgY29tcGFueSBjYW5ub3QgY2Fycnkgb3V0IGl0cyBidXNpbmVzcyBub3JtYWxseS48XC9wPlxyXG5cclxuPHA+RG9uZ3dvbywgc3VycHJpc2VkIHRoYXQgdGhlIGNvbXBhbnkmcnNxdW87cyB3b3JrIHdhcyBjYXJyaWVkIG91dCBub3JtYWxseSBpbiB0aGVzZSBjb25kaXRpb25zLCBsb29rZWQgYXQgaG93IG1hbnkgaG91cnMgZWFjaCBvZiB0aGUgJE4kIGVtcGxveWVlcyB3ZW50IHRvIHdvcmsgaW4gdGhlIGxhc3QgJE0kIGhvdXJzLjxcL3A+XHJcblxyXG48cD5FdmVyeW9uZSBnb2VzIHRvIHdvcmsgYW5kIGdldHMgb2ZmIHdvcmsgZXhhY3RseSBvbiB0aGUgaG91ciwgYW5kIHRoZSBjb21wYW55IHdhcyBhYmxlIHRvIGNhcnJ5IG91dCBpdHMgYnVzaW5lc3Mgbm9ybWFsbHkgZm9yIHRoZSBsYXN0ICRNJCBob3Vycy4gR2l2ZW4gdGhlIHRvdGFsIG51bWJlciBvZiBob3VycyBlYWNoIG9mIHRoZSAkTiQgZW1wbG95ZWVzIGhhcyBnb25lIHRvIHdvcmsgaW4gdGhlIGxhc3QgJE0kIGhvdXJzLCBmaW5kIHRoZSBudW1iZXIgb2YgYWxsIHBvc3NpYmxlIGNhc2VzLiBBbiBlbXBsb3llZSBjYW4gZ28gdG8gd29yayBvciBnZXQgb2ZmIHdvcmsgc2V2ZXJhbCB0aW1lcy48XC9wPlxyXG5cclxuPHA+SW4gdGhlIHBlcmlvZCBvZiAkTSQgaG91cnMsIGNoZWNraW5nIGV2ZXJ5IGhvdXIgYXQgMzAgbWludXRlcyBwYXN0IHRoZSBob3VyLCBpZiB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgdGltZSB3aGVyZSBhdCBsZWFzdCBvbmUgcGVyc29uIHdobyB3ZW50IHRvIHdvcmsgaXMgZGlmZmVyZW50LCBpdCBpcyBhIGRpZmZlcmVudCBjYXNlLiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIGN1cnJlbnQgdGltZSBpcyBvbiB0aGUgaG91ci48XC9wPlxyXG4iLCJpbnB1dCI6IjxwPlRoZSBmaXJzdCBsaW5lIGNvbnRhaW5zIHR3byBpbnRlZ2VycywgJE4kIGFuZCAkTSQsIHNlcGFyYXRlZCBieSBzcGFjZXMgJCgxXFxsZSBOLE1cXGxlIDVcXCwwMDApJCAmbmRhc2g7IHRoZSBudW1iZXIgb2YgZW1wbG95ZWVzIGFuZCB0aGUgbGVuZ3RoIG9mIHRoZSByZWNlbnQgdGltZSBEb25nd29vIGxvb2tlZCBhdC48XC9wPlxyXG5cclxuPHA+VGhlIHNlY29uZCBsaW5lIGNvbnRhaW5zICROJCBpbnRlZ2VycywgJEFfMSxBXzIsXFxjZG90cyAsQV9OJCwgc2VwYXJhdGVkIGJ5IHNwYWNlcyAkKDBcXGxlIEFfaVxcbGUgTSkkICZuZGFzaDsgdGhlIHRpbWUgdGhlIGVtcGxveWVlcyB3ZW50IHRvIHdvcmsgaW4gdGhlIGxhc3QgJE0kIGhvdXJzLjxcL3A+XHJcbiIsIm91dHB1dCI6IjxwPk91dHB1dCBhIHNpbmdsZSBpbnRlZ2VyICZuZGFzaDsgdGhlIHJlbWFpbmRlciBvZiB0aGUgbnVtYmVyIG9mIGFsbCBwb3NzaWJsZSBjb21iaW5hdGlvbnMgb2YgZW1wbG95ZWVzIHdobyB3ZW50IHRvIHdvcmssIGRpdmlkZWQgYnkgJDEwXjkrNyQuPFwvcD5cclxuXHJcbjxwPk5vdGUgdGhhdCAkMTBeOSs3JCBpcyBhIHByaW1lIG51bWJlci48XC9wPlxyXG4iLCJoaW50IjoiIiwib3JpZ2luYWwiOiIwIiwiaHRtbF90aXRsZSI6IjAiLCJwcm9ibGVtX2xhbmdfdGNvZGUiOiJFbmdsaXNoIiwic3VidGFzazEiOiI8cD4kTlxcdGltZXMgTSBcXGxlIDIwJDxcL3A+XHJcbiIsInN1YnRhc2syIjoiPHA+JE4sIE0gXFxsZSAxMDAkPFwvcD5cclxuIiwic3VidGFzazMiOiI8cD4kTiwgTSBcXGxlIDUwMCQ8XC9wPlxyXG4iLCJzdWJ0YXNrNCI6IjxwPlRoZXJlIGFyZSBubyBhZGRpdGlvbmFsIHJlc3RyaWN0aW9ucy48XC9wPlxyXG4ifV0=

출처

University > 고려대학교 > MatKor Cup > 제4회 고려대학교 MatKor Cup: 2024 Winter/Spring F번

채점 및 기타 정보

  • 예제는 채점하지 않는다.