暴力在其他地方可以过!
Java 代码
import java.util.*;
public class Main {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
int n = scanner.nextInt();
int m = scanner.nextInt();
int t = scanner.nextInt();
int[] flag = new int[n+1];
int[] prioritys = new int[n+1];
Order[] orders = new Order[100010];
boolean[] states = new boolean[n+1];
for(int i = 0 ; i < 100010; i++){
orders[i] = new Order(t+1000, 0);
}
int cnt = 0;
while(m-- > 0){
int time = scanner.nextInt();
int num = scanner.nextInt();
if(time <= t) orders[cnt++] = new Order(time, num);
}
Arrays.sort(orders);
int temp = 0;
for(int i = 1; i <= t; i++){
// 每个时刻计算一轮
while(orders[temp].time == i){
flag[orders[temp].number]++;
temp++;
}
// 如果i时刻有订单+2,没订单-1
for(int j = 1; j <= n; j++){
if(flag[j] == 0 && prioritys[j] > 0){
prioritys[j]--;
}else{
prioritys[j] += 2*flag[j];
}
}
// 初始化flag
for(int j = 1; j <= n; j++) flag[j] = 0;
// 计算那些在缓存里
for (int j = 1; j <= n; j++) {
if(prioritys[j] > 5) states[j] = true;
if(prioritys[j] <= 3) states[j] = false;
}
}
int res = 0;
for(int i = 1; i <= n; i++){
if(states[i]) res++;
}
System.out.println(res);
scanner.close();
}
}
class Order implements Comparable<Order>{
int time;
int number;
public Order(int time, int number) {
this.time = time;
this.number = number;
}
@Override
public int compareTo(Order o) {
return Integer.compare(this.time, o.time);
}
}