-
Notifications
You must be signed in to change notification settings - Fork 0
/
fraudulent activity java final.txt
67 lines (63 loc) · 2.04 KB
/
fraudulent activity java final.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
import java.io.*;
import java.util.*;
import java.text.*;
import java.math.*;
import java.util.regex.*;
public class Solution {
static int activityNotifications(int[] expenditure, int d,int n) {
int[] count = new int[n];
boolean isEven = d % 2 == 0 ? true : false;
// initital count for d
for (int i=0; i<d; i++) {
count[expenditure[i]]++;
}
int notifications = 0;
for (int i=d; i<expenditure.length; i++) {
float median;
if (isEven) {
int index1 = d/2 - 1;
int index2 = d/2;
int match = 0;
int c = -1, median1 = 0, median2 = 0;
while (match <= index1) {
c++;
match += count[c];
}
median1 = c;
while (match <= index2) {
c++;
match += count[c];
}
median2 = c;
median = ((float) median1 + (float) median2) / 2;
} else {
int index = d/2;
int match = 0;
int c = -1;
while (match <= index) {
c++;
match += count[c];
}
median = (float) c;
}
if (expenditure[i] >= 2*median) {
notifications++;
}
count[expenditure[i]]++;
count[expenditure[i-d]]--;
}
return notifications;
}
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
int n = in.nextInt();
int d = in.nextInt();
int[] expenditure = new int[n];
for(int expenditure_i = 0; expenditure_i < n; expenditure_i++){
expenditure[expenditure_i] = in.nextInt();
}
int result = activityNotifications(expenditure, d,n);
System.out.println(result);
in.close();
}
}