Submission #108507


Source Code Expand

import java.util.ArrayList;
import java.util.PriorityQueue;
import java.util.Scanner;

public class Main {
    
    class Rain implements Comparable<Rain>{
        int start;
        int finish;
        
        Rain(int start, int finish) {
           this.start  =  makeStart(start); 
           this.finish = makeFinish(finish);
        }
        
        int makeStart (int start) {
            int num = start % 10;
            if (num >= 5) 
                return start/10*10+5;
            else 
                return start/10*10;
        }
        
        int makeFinish(int finish) {
            int num = finish % 10;
            if(num == 0)
                return finish;
            else if (num <= 5)
                return finish/10*10 +5;
            else {
                int n = (finish/10+1) % 10;
                if(n == 6) {
                    return (finish/100+1)*100;
                }
                else 
                    return (finish/10+1)*10;
            }
        }

        @Override
        public int compareTo(Rain o)
        {
            return this.start - o.start != 0 ? this.start - o.start : this.finish - o.finish;
        }
        
        public String toString() {
            return makeStr(start) + "-" + makeStr(finish);
        }
        
        public String makeStr(int start) {
            String startStr = ""+start;
            if (start / 1000 >= 1) {
                
            }
            else if(start / 100 >= 1) {
                startStr = "0" + startStr;
            }
            else if(start / 10 >= 1) {
                startStr = "00" + startStr;
            }
            else 
                startStr = "000" + startStr;
            return startStr;
        }
    }
    
	public void run() {
		Scanner sc = new Scanner(System.in);
		while (sc.hasNext()) {
		    int N = sc.nextInt();
		    PriorityQueue<Rain> queue = new PriorityQueue<Main.Rain>();
		    sc.nextLine();
		    for (int i = 0; i < N; i++)
            {
		       String[] line = sc.nextLine().split("-");
		       queue.add(new Rain(Integer.valueOf(line[0]), Integer.valueOf(line[1])));
            }
		    ArrayList<Rain>results = appendRains(queue);
		    
		    for (Rain rain : results)
            {
               System.out.println(rain); 
            }
		}
	}
	
	public ArrayList<Rain> appendRains (PriorityQueue<Rain> queue) {
	    ArrayList<Rain> results = new ArrayList<Main.Rain>();
	    while(queue.size() >= 2) {
	        Rain r1 = queue.poll();
	        Rain r2 = queue.poll();
	        
	        if(r1.finish >= r2.start) {
	            queue.add(new Rain(r1.start, Math.max(r1.finish, r2.finish)));
	        }
	        else {
	            results.add(r1);
	            queue.add(r2);
	        }
	    }
	    while(!queue.isEmpty()) {
	        results.add(queue.poll());
	    }
	    return results;
	}

	public static void main(String[] args) {
		new Main().run();
	}
}

Submission Info

Submission Time
Task D - 感雨時刻の整理
User hozum
Language Java (OpenJDK 1.7.0)
Score 100
Code Size 3047 Byte
Status AC
Exec Time 1159 ms
Memory 38360 KB

Judge Result

Set Name all
Score / Max Score 100 / 100
Status
AC × 48
Set Name Test Cases
all 00_sample_01.txt, 00_sample_02.txt, 00_sample_03.txt, cho_cho_chokudai.txt, chokudai_ga_cho.txt, test_01.txt, test_02.txt, test_03.txt, test_04.txt, test_05.txt, test_06.txt, test_07.txt, test_08.txt, test_09.txt, test_10.txt, test_11.txt, test_12.txt, test_13.txt, test_14.txt, test_15.txt, test_16.txt, test_17.txt, test_18.txt, test_19.txt, test_20.txt, test_21.txt, test_22.txt, test_23.txt, test_24.txt, test_25.txt, test_26.txt, test_27.txt, test_28.txt, test_29.txt, test_30.txt, test_31.txt, test_32.txt, test_33.txt, test_34.txt, test_35.txt, test_36.txt, test_37.txt, test_38.txt, test_39.txt, test_40.txt, test_41.txt, test_42.txt, test_43.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 492 ms 23732 KB
00_sample_02.txt AC 490 ms 23596 KB
00_sample_03.txt AC 496 ms 23700 KB
cho_cho_chokudai.txt AC 1020 ms 37956 KB
chokudai_ga_cho.txt AC 1052 ms 38020 KB
test_01.txt AC 516 ms 24236 KB
test_02.txt AC 500 ms 24240 KB
test_03.txt AC 509 ms 24240 KB
test_04.txt AC 508 ms 24108 KB
test_05.txt AC 511 ms 24112 KB
test_06.txt AC 511 ms 24504 KB
test_07.txt AC 502 ms 24108 KB
test_08.txt AC 495 ms 23980 KB
test_09.txt AC 551 ms 25788 KB
test_10.txt AC 545 ms 26420 KB
test_11.txt AC 542 ms 25520 KB
test_12.txt AC 527 ms 25144 KB
test_13.txt AC 516 ms 24252 KB
test_14.txt AC 554 ms 25644 KB
test_15.txt AC 569 ms 26032 KB
test_16.txt AC 522 ms 24244 KB
test_17.txt AC 537 ms 25648 KB
test_18.txt AC 507 ms 24500 KB
test_19.txt AC 531 ms 25016 KB
test_20.txt AC 539 ms 25524 KB
test_21.txt AC 1027 ms 38076 KB
test_22.txt AC 1049 ms 38080 KB
test_23.txt AC 1063 ms 37548 KB
test_24.txt AC 1030 ms 37652 KB
test_25.txt AC 1039 ms 37744 KB
test_26.txt AC 1080 ms 37480 KB
test_27.txt AC 1054 ms 37936 KB
test_28.txt AC 1052 ms 38360 KB
test_29.txt AC 498 ms 23728 KB
test_30.txt AC 489 ms 23716 KB
test_31.txt AC 734 ms 33328 KB
test_32.txt AC 495 ms 23596 KB
test_33.txt AC 1159 ms 38072 KB
test_34.txt AC 473 ms 23604 KB
test_35.txt AC 510 ms 24632 KB
test_36.txt AC 1040 ms 38132 KB
test_37.txt AC 1037 ms 37780 KB
test_38.txt AC 1050 ms 37960 KB
test_39.txt AC 1028 ms 37336 KB
test_40.txt AC 1037 ms 37872 KB
test_41.txt AC 1095 ms 37796 KB
test_42.txt AC 1064 ms 38016 KB
test_43.txt AC 1043 ms 37604 KB