using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace SeqListSort
{
/// <summary>
/// <ather>
/// lihonlin
/// </ather>
/// <content>
/// 搬桌子问题
/// 某教学大楼一层有n个教室,从左到右依次编号为1、2、…、n。现在要把一些课桌从某些教室搬到
/// 另外一些教室,每张桌子都是从编号较小的教室搬到编号较大的教室,每一趟,都是从左到右走,
/// 搬完一张课桌后,可以继续从当前位置或往右走搬另一张桌子。输入数据:先输入n、m,然后紧接
/// 着m行输入这m张要搬课桌的起始教室和目标教室。输出数据:最少需要跑几趟。
/// Sample Input
/// 10 5
/// 1 3
/// 3 9
/// 4 6
/// 6 10
/// 7 8
/// Sample Output
/// 3
/// </content>
/// </summary>
public struct Room
{
public int start;
public int end;
}
class Greedy_Desk
{
const int size = 20;
static int m;
static int n;
static Room[] room = new Room[size];
static bool[] isMove = new bool[size];
static int min = 0;
static void InitData()
{
Console.WriteLine("请输入n个教室");
n = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("请输入m行课桌");
m = Convert.ToInt32(Console.ReadLine());
Console.WriteLine("输入这m张要搬课桌的起始教室和目标教室");
for (int i = 0; i < m; ++i)
{
room[i].start = Convert.ToInt32(Console.ReadLine());
room[i].end = Convert.ToInt32(Console.ReadLine());
}
}
static void Sort()
{
for (int i = 0; i < m; ++i)
{
for (int j = 0; j < m - i - 1; ++j )
{
if (room[j].start > room[j + 1].start)
{
int temp = room[j].start;
room[j].start = room[j + 1].start;
room[j + 1].start = temp;
}
}
}
}
public static void MoveDesk()
{
InitData();
Sort();
int num = 0;
while ( num < m )
{
int temp = 0;
for (int i = 0; i < m; ++i )
{
if (temp <= room[i].start && !isMove[i])
{
temp = room[i].end;
isMove[i] = true;
num++;
}
}
min++;
}
Console.WriteLine("最少需要跑{0}趟", min);
}
}
}