Sponsors

Codeforces Round #412 (rated, Div. 1, based on VK Cup 2017 Round 3), problem: (E) Blog Post Rating Solution In JAVA

import static java.lang.Double.parseDouble;
import static java.lang.Integer.parseInt;
import static java.lang.Long.parseLong;
import static java.lang.Math.min;
import static java.lang.System.exit;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.io.PrintWriter;
import java.util.Random;
import java.util.StringTokenizer;

public class E {

static BufferedReader in;
static PrintWriter out;
static StringTokenizer tok;

static int left[], right[], value[], y[], size[], func[];
static int free;

static final Random rng = new Random();

static int create(int val) {
int res = free;
free = value[free];
left[res] = -1;
right[res] = -1;
value[res] = val;
size[res] = 1;
func[res] = val;
return res;
}

static void destroy(int i) {
value[i] = free;
free = i;
}

static void fix(int i) {
int l = left[i], r = right[i];
int sl = l < 0 ? 0 : size[l];
int sr = r < 0 ? 0 : size[r];
size[i] = 1 + sl + sr;
func[i] = value[i] – sl;
if (l >= 0) {
func[i] = min(func[i], func[l]);
}
if (r >= 0) {
func[i] = min(func[i], func[r] – sl – 1);
}
}

static int splitLeft, splitRight, splitSelf;
static void split(int root, int val) {
if (root < 0) {
splitLeft = splitRight = splitSelf = -1;
} else if (value[root] > val) {
split(left[root], val);
left[root] = splitRight;
splitRight = root;
fix(root);
} else if (value[root] < val) {
split(right[root], val);
right[root] = splitLeft;
splitLeft = root;
fix(root);
} else {
splitLeft = left[root];
splitRight = right[root];
splitSelf = root;
left[root] = right[root] = -1;
fix(root);
}
}

static void split2(int root, int v) {
if (root < 0) {
splitLeft = splitRight = -1;
} else {
int sl = left[root] < 0 ? 0 : size[left[root]];
if (value[root] + sl + v >= 0) {
split2(left[root], v);
left[root] = splitRight;
splitRight = root;
fix(root);
} else {
split2(right[root], v + sl + 1);
right[root] = splitLeft;
splitLeft = root;
fix(root);
}
}
}

static int merge(int l, int r) {
if (l < 0) {
return r;
} else if (r < 0) {
return l;
} else if (y[l] < y[r]) {
right[l] = merge(right[l], r);
fix(l);
return l;
} else {
left[r] = merge(l, left[r]);
fix(r);
return r;
}
}

// static void print(int root) {
// print2(root);
// System.err.println();
// }
//
// static void print2(int root) {
// if (root >= 0) {
// System.err.print(‘(‘);
// if (left[root] >= 0) {
// print2(left[root]);
// System.err.print(‘ ‘);
// }
// System.err.print(value[root]);
// if (right[root] >= 0) {
// System.err.print(‘ ‘);
// print2(right[root]);
// }
// System.err.print(‘)’);
// }
// }

static void solve() throws Exception {
int n = nextInt();
left = new int[n];
right = new int[n];
value = new int[n];
y = new int[n];
size = new int[n];
func = new int[n];
free = 0;
for (int i = 0; i < n; i++) {
y[i] = rng.nextInt();
value[i] = i < n – 1 ? i + 1 : -1;
}
int root = -1;
for (int i = 0; i < n; i++) {
int val = nextInt();
split(root, val);
root = merge(merge(merge(splitLeft, create(val)), splitSelf), splitRight);
// print(root);
split2(root, 0);
int sl = splitLeft < 0 ? 0 : size[splitLeft];
int sr = splitRight < 0 ? 0 : size[splitRight];
int fr = splitRight < 0 ? 2 * n : func[splitRight];
out.println(min(sr – sl, fr + sr – 1));
root = merge(splitLeft, splitRight);
// print(root);
}
}

static int nextInt() throws IOException {
return parseInt(next());
}

static long nextLong() throws IOException {
return parseLong(next());
}

static double nextDouble() throws IOException {
return parseDouble(next());
}

static String next() throws IOException {
while (tok == null || !tok.hasMoreTokens()) {
tok = new StringTokenizer(in.readLine());
}
return tok.nextToken();
}

public static void main(String[] args) {
try {
in = new BufferedReader(new InputStreamReader(System.in));
out = new PrintWriter(new OutputStreamWriter(System.out));
solve();
in.close();
out.close();
} catch (Throwable e) {
e.printStackTrace();
exit(1);
}
}
}

Predator: Bloodshed #1 Preview:...

The Hunt Intensifies: Predator: Bloodshed #1 Takes the Yautja...

Menstrual pads and tampons...

The Hidden Risks in Your Period Products For decades, menstrual...

Taalas raises $169M in...

Taalas Secures $169M to Revolutionize AI with Model-Specific ChipsThe...

Locals back Aussie bid...

Locals Root for Australian Bid in Whyalla Steelworks Sale The...

Oakland County diverts mental...

Oakland County Faces Mental Health Service Disruptions Amid Crisis...

How long do you...

How Long Should You Leave Bird Feeders Out? A...

Predator: Bloodshed #1 Preview: Alien Invader Crashes Fight Club

The Hunt Intensifies: Predator: Bloodshed #1 Takes the Yautja to an Underground Arena Marvel Comics continues to push the boundaries of the Predator franchise, and...

Menstrual pads and tampons can contain toxic substances – here’s what to know about this emerging health issue

The Hidden Risks in Your Period Products For decades, menstrual products like tampons and pads have been treated as basic hygiene essentials, used by nearly...

Taalas raises $169M in funding to develop model-specific AI chips

Taalas Secures $169M to Revolutionize AI with Model-Specific ChipsThe landscape of artificial intelligence hardware is witnessing a seismic shift as Taalas Inc., a burgeoning...

Locals back Aussie bid for Whyalla but competition concerns loom

Locals Root for Australian Bid in Whyalla Steelworks Sale The sale of the Whyalla steelworks has reached a fever pitch, exactly twelve months after the...

Oakland County diverts mental health patients to ERs amid crisis center takeover – Bridge Michigan

Oakland County Faces Mental Health Service Disruptions Amid Crisis Center TakeoverOakland County is currently at a crossroads regarding its mental health crisis services. In...

How long do you leave bird feeders out?

How Long Should You Leave Bird Feeders Out? A Year-Round Guide Watching birds flock to your garden is one of life’s simplest and most rewarding...

Space programmes reflect ancient scientific spirit in modern form: Rajnath

The Intersection of Ancient Wisdom and Modern Space ExplorationDefence Minister Rajnath Singh has recently shared profound insights regarding India's burgeoning space sector, suggesting that...

Day One Euro Trials Recap: Top Grapplers Advance In Belgrade

Day One Recap: ADCC European Trials Showcase Elite Grappling in BelgradeThe grappling world turned its eyes toward Belgrade, Serbia, this weekend as the ADCC...

4 Times Choi Jin Hyuk And Oh Yeon Seo Got Closer In Episodes 7-8 Of “Positively Yours”

The Growing Chemistry in Episodes 7 and 8 of "Positively Yours" Fans of the hit drama "Positively Yours" are currently on an emotional rollercoaster as...