AcWing 1241. java排序做法
原题链接
简单
作者:
季之秋
,
2021-03-04 21:31:24
,
所有人可见
,
阅读 694
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc=new Scanner(System.in);
int n=sc.nextInt();
int m=sc.nextInt();
int T=sc.nextInt();
int N=100010;
int score[]=new int[N];
int last[]=new int[N];
boolean st[]=new boolean[N];
Node order[]=new Node[N];
for(int i=0;i<m;i++){
int a=sc.nextInt();
int b=sc.nextInt();
order[i]=new Node(a,b);
}
Arrays.sort(order,0,m);
for(int i=0;i<m;i++){
int j=i; //找相同订单处理·
while(j<m&&order[j].equals(order[i])) j++;
int id=order[i].y,t=order[i].x,cnt=j-i;
i=j-1; //处理一段相同订单
score[id]-=t-last[id]-1;
if(score[id]<0) score[id]=0; //负数可能导致答案变小,而且也不能是负数
if(score[id]<=3) st[id]=false;
score[id]+=cnt*2;
if(score[id]>5) st[id]=true;
last[id]=t;
}
int res=0;
for(int i=1;i<=n;i++){
if(last[i]<T){
score[i]-=T-last[i];
if(score[i]<=3) st[i]=false;
}
if(st[i]) res++;
}
System.out.println(res);
}
static class Node implements Comparable<Node>{
int x,y;
Node(int a,int b){
x=a;y=b;
}
public int compareTo(Node o1){
if(this.x==o1.x) return this.y-o1.y;
return this.x-o1.x;
}
public boolean equals(Node o1){
return x==o1.x&&y==o1.y;
}
}
}