java
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner in=new Scanner(System.in);
int n=Integer.parseInt(in.nextLine());
//已注册app列表
List<Log> list=new ArrayList<>();
for(int k=0;k<n;k++){
String[] str=in.nextLine().split(" ");
String name=str[0];
int level=Integer.parseInt(str[1]);
double begin=transTime(str[2]),end=transTime(str[3]);
Log cur=new Log(begin,end,name,level);
//冲突标志
int conflict=0;
for(int i=0;i<list.size();i++){
Log pre=list.get(i);
// 冲突发生
if(check(pre,cur)){
conflict=1;
//待注册的app优先级更低,不能注册
if(pre.level>=cur.level){
break;
}
int j=i+1;
boolean flag=true;
//扫描pre之后注册的app信息
while(j<list.size()){
Log tmp=list.get(j);
// 存在冲突且已注册app的优先级更高,当前app不能注册
if(tmp.begin<cur.end&&tmp.level>cur.level){
flag=false;
break;
}
j++;
}
if(flag){
list.remove(i);
list.add(cur);
}else{
break;
}
}
}
//未发生冲突,注册
if(conflict==0){
list.add(cur);
}
}
double query=transTime(in.nextLine());
String ans="NA";
for(Log log:list){
if(log.begin<=query&&query<=log.end){
ans=log.name;
break;
}
}
System.out.println(ans);
}
//时间格式转成小时
public static double transTime(String s){
String[] arr=s.split(":");
double ans=0;
ans+=Integer.parseInt(arr[0]);
ans+=Integer.parseInt(arr[1])*1.0/60;
return ans;
}
//冲突检查
public static boolean check(Log pre,Log cur){
if(pre.end<=cur.begin||cur.end<=pre.begin){
return false;
}
return true;
}
}
class Log{
double begin,end;
String name;
int level;
public Log(double begin,double end,String name,int level){
this.begin=begin;
this.end=end;
this.name=name;
this.level=level;
}
}
注:按照图例,应该不存在两个app注册时间仅有一个交点(相同时刻)的情况,如app1: 09:00-10:00, app2: 10:00-11:00