⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 3383619_wa.java

📁 北大大牛代码 1240道题的原代码 超级权威
💻 JAVA
字号:
import java.util.*;

public class Main
{
	public static void main(String [] args)
	{
		new Main().run();
	}

	TreeSet <String> download;
	TreeSet <String> paused;
	TreeSet <String> waiting;
	TreeSet <String> finished;
	String com, task, order;

	class TaskInfo implements Comparable <TaskInfo>
	{
		String task, status;

		public TaskInfo(String task, String status)
		{
			this.task = task;
			this.status = status;
		}

		public int compareTo(TaskInfo that)
		{
			if (order.equals("asc"))
			{
				return task.compareTo(that.task);
			}
			else
			{
				return that.task.compareTo(task);
			}
		}
	}

	TreeSet <TaskInfo> all;

	private void run()
	{
		Scanner in = new Scanner (System.in);
		int cas;
		int m, n;
		
		cas = in.nextInt();
		while (cas-- > 0)
		{
			n = in.nextInt();
			m = in.nextInt();
			order = "asc";
			all = new TreeSet <TaskInfo> ();
			download = new TreeSet <String> ();
			paused = new TreeSet <String> ();
			waiting = new TreeSet <String> ();
			finished = new TreeSet <String> ();
			for (int i = 0; i < m; i++)
			{
				com = in.next();
				if (com.equals("Sort"))
				{
					order = in.next();
					continue;
				}
				task = in.next();
				if (com.equals("New"))
				{
					if (download.size() < n)
					{
						download.add(task);
					}
					else
					{
						waiting.add(task);
					}
					continue;
				}
				if (com.equals("Pause"))
				{
					paused.add(task);
					if (waiting.contains(task))
					{
						waiting.remove(task);
					}
					else
					{
						download.remove(task);
					}
					check();
					continue;
				}
				if (com.equals("Continue"))
				{
					paused.remove(task);
					if (download.size() < n)
					{
						download.add(task);
					}
					else
					{
						waiting.add(task);
					}
					continue;
				}
				download.remove(task);
				check();
				finished.add(task);
			}
			output();
		}
	}

	private void output()
	{
		for (Iterator i = download.iterator(); i.hasNext(); )
		{
			all.add(new TaskInfo((String)i.next(), "downloading"));
		}
		for (Iterator i = waiting.iterator(); i.hasNext(); )
		{
			all.add(new TaskInfo((String)i.next(), "waiting"));
		}
		for (Iterator i = paused.iterator(); i.hasNext(); )
		{
			all.add(new TaskInfo((String)i.next(), "paused"));
		}
		for (Iterator i = finished.iterator(); i.hasNext(); )
		{
			all.add(new TaskInfo((String)i.next(), "finished"));
		}
		for (Iterator i = all.iterator(); i.hasNext(); )
		{
			TaskInfo tmp = (TaskInfo)i.next();
			System.out.println(tmp.task + " " + tmp.status);
		}
		System.out.println();
	}

	private void check()
	{
		if (waiting.size() != 0)
		{
			String tmp;

			if (order.equals("asc"))
			{
				tmp = waiting.first();
			}
			else
			{
				tmp = waiting.last();
			}
			waiting.remove(tmp);
			download.add(tmp);
		}
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -