1656: 旅行计划

内存限制:256 MB 时间限制:1.000 S
评测方式:文本比较 命题人:
提交:1 解决:0

题目描述

某教练想做一次旅行,将走高速公路,因为在路旁有一些价格实惠的旅馆,当然要考虑沿途花费尽可能的少(不考虑开始点和到达点)。为了安全起见,他每天只在白天行走,晚上在旅馆住宿,并且一天的路程不超过800公里。旅行社根据调查,给出了沿路旅馆的相关信息,包括每个旅馆离出发点的距离和该旅馆的价格,当然,为了整个旅行的顺利完成,任意两个旅馆之间的距离都将在800公里以内。

【编程任务】

 你的任务是编写一个程序,在旅行距离内,对给定的输入数据,求

1)费用最少的旅行计划(即中途住宿的费用之和),如果有多个最小费用计划,则取日程最短的计划。

2)日程最短的旅行计划(中途在旅馆住宿的天数),如果有多个最短日程计划,则取费用最少的计划。

输入

输入文件中的第一行有用一个空格分隔的两个正整数,第一个整数d 表示旅行的距离(单位:公里);第二个整数 h表示沿途旅社的数目( d 16000, h 1000)。接下来的h行,每行有两个用单个空格分隔的正整数,说明某旅社的相关信息,第一个正整数表示它离起点的距离(单位:公里),第二个正整数表示该旅社的价格。价格不会超过1000

输出

输出文件的第一行输出费用最少的旅行计划;第二行输出日程最短的旅行计划;旅行计划由在所有住宿的旅社组成,对每个旅社,只输出离出发点的距离即可,相邻两个数之间用一个空格分隔。

样例输入 复制

2000 7
100 54
120 70
400 17
700 38
1000 25
1200 18
1440 40

样例输出 复制

400 1200
400 1200