General
 
 
# Author Problem Lang Verdict Time Memory Sent Judged  
71466945 Practice:
Verdusk
777E - 27 Java 8 Accepted 577 ms 0 KB 2020-02-20 03:49:58 2020-02-20 03:49:58
→ Source
import java.util.Arrays;
import java.util.Comparator;
import java.util.Scanner;
import java.util.Stack;

public class HanoiFactory 
{
	static class C implements Comparator<Ring>
	{
		@Override
		public int compare(Ring arg0, Ring arg1) 
		{
			int res = (int)(arg0.or - arg1.or);
			if(res == 0)res = (int)(arg0.ir - arg1.ir);
			return res;
		}
	}
	
	static class Ring
	{
		int id;
		long ir;
		long or;
		long h;
		
		public Ring(int i, long ir0, long or0, long h0)
		{
			id = i;
			ir = ir0;
			or = or0;
			h = h0;
		}
		
		public String toString()
		{
			return Integer.toString(id);
		}
	}
	
	static long score = 0;
	static Ring[] ring;
	
	public static void main(String[] args) 
	{
		Scanner sc = new Scanner(System.in);
		
		int n = sc.nextInt();
		ring = new Ring[n];
		
		for(int i = 0; i < n; i++)
		{
			long ir = sc.nextLong();
			long or = sc.nextLong();
			long h  = sc.nextLong();
			ring[i] = new Ring(i, ir, or, h);
		}
		
		C c = new C();
		Arrays.sort(ring, c);
//		System.out.println(Arrays.toString(ring));
		
		//go from bottom
		long cursum = 0;
		
		Stack<Ring> hanoi = new Stack<>();
		
		for(int i = n-1; i >= 0; i--)
		{ //do all
			
			//get rid of any disablers
			while(!hanoi.empty() && hanoi.peek().ir >= ring[i].or)
			{
				cursum -= hanoi.peek().h;
				hanoi.pop();
			}
			
			cursum += ring[i].h;
			hanoi.add(ring[i]);
			
			score = Math.max(cursum, score);
		}
		
		System.out.println(score);
	}

}
?
Time: ? ms, memory: ? KB
Verdict: ?
Input
?
Participant's output
?
Jury's answer
?
Checker comment
?
Diagnostics
?
Click to see test details