201812-2 小明放学
题目
思路
画个图就可以知道红绿灯之间的关系,比较简单,看在哪个时间段就行了,注意用long保存数据。
import java.util.*;
class Main {
public static long cal(long val,long r,long gy,long yy){
if(val<r){
return r-val;
}
else if(r<=val && val<gy){
return 0;
}
else {
return yy-val+r;
}
}
public static void main(String[] args) {
Scanner sc= new Scanner(System.in);
long r=sc.nextInt();
long y=sc.nextInt();
long g=sc.nextInt();
long N=sc.nextInt();
long gy=r+g;//绿黄临界
long yy=r+y+g;//最终临界
long sum=0;//计算所用时间
for(int i=0;i<N;i++){
long k=sc.nextInt();
long t=sc.nextInt();
if(k==0){
sum+=t;
}
else if(k==1){//红灯
long gg=(r-t+sum)%yy;
sum+=cal(gg,r,gy,yy);
}
else if(k==2){//黄灯
long gg=(yy-t+sum)%yy;
sum+=cal(gg,r,gy,yy);
}
else{//绿灯
long gg=(gy-t+sum)%yy;
sum+=cal(gg,r,gy,yy);
}
}
System.out.print(sum);
}
}