import java.io.*; import java.util.*; import java.text.*; import java.math.*; import java.util.regex.*; public class Solution { static long maximumPeople(long[] p, long[] x, long[] y, long[] r) { // Return the maximum number of people that will be in a sunny town after removing exactly one cloud. //assuming x n y are sorted long[] cloudrange1 = new long[y.length]; long[] cloudrange2 = new long[y.length]; for(int i=0;i cloudpopCoverage = new HashMap(); boolean[] sunnytowns = new boolean[x.length]; for(int i=0;i=cloudrange1[i] && x[j]<=cloudrange2[i]) { if(cloudpopCoverage.get(i)==null) cloudpopCoverage.put(i,p[j]); else { cloudpopCoverage.put(i,p[j]+cloudpopCoverage.get(i)); } sunnytowns[j]=false; } else { sunnytowns[j]=true; } } } Long maxPop=0L; int index=-1; for(Map.Entry e:cloudpopCoverage.entrySet()) { if(e.getValue()>maxPop) { index=e.getKey(); maxPop=e.getValue(); } } Long sunnypop = 0L; for(int i=0;i