Created
December 30, 2015 15:33
-
-
Save mbuff24/5d24ffcf06c7ba7f82ae to your computer and use it in GitHub Desktop.
Java solution for Algorithmic Crush -- https://www.hackerrank.com/contests/w4/challenges/crush based on http://codereview.stackexchange.com/a/95812
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
import java.io.*; | |
import java.util.*; | |
public class Solution { | |
static class Operation { | |
public int a; | |
public int b; | |
public int k; | |
public Operation(int a, int b, int k) { | |
this.a = a; | |
this.b = b; | |
this.k = k; | |
} | |
public String toString() { | |
return "[" + a + ", " + b + ", " + k + "]"; | |
} | |
} | |
public static long crush(int n, int m, Operation[] ops) { | |
long[] crushState = new long[n+1]; | |
for(int i=0; i < crushState.length; i++) { | |
crushState[i] = 0; | |
} | |
for(int i=0; i < m; i++) { | |
crushState[ops[i].a-1] += ops[i].k; | |
crushState[ops[i].b] -= ops[i].k; | |
} | |
long max = crushState[0]; | |
long sum = max; | |
for(int i=1; i < n; i++) { | |
sum += crushState[i]; | |
if(sum > max) { | |
max = sum; | |
} | |
} | |
return max; | |
} | |
public static void main(String[] args) { | |
/* Enter your code here. Read input from STDIN. Print output to STDOUT. Your class should be named Solution. */ | |
/* https://www.hackerrank.com/contests/w4/challenges/crush */ | |
Scanner sc = new Scanner(System.in); | |
int n = sc.nextInt(); | |
int m = sc.nextInt(); | |
Operation[] ops = new Operation[m]; | |
for(int i=0; i < m; i++) { | |
int a = sc.nextInt(); | |
int b = sc.nextInt(); | |
int k = sc.nextInt(); | |
ops[i] = new Operation(a, b, k); | |
} | |
long max = crush(n, m, ops); | |
System.out.println(max); | |
} | |
} |
There is no need to populate crushState with zeroes, it is the default behavior.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
can someone explain the for loop
for(int i=0; i < m; i++) {
crushState[ops[i].a-1] += ops[i].k;
crushState[ops[i].b] -= ops[i].k;//this line preferably
| }