📄 3383640_wa.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;
}
if (com.equals("Finish"))
{
finished.add(task);
download.remove(task);
check();
}
}
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.isEmpty())
{
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 + -