git reimport

This commit is contained in:
2019-03-15 13:47:54 +04:00
commit 3b461f73de
489 changed files with 1631603 additions and 0 deletions

View File

@@ -0,0 +1,183 @@
package chelper;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.Random;
import io.InputReader;
import io.OutputWriter;
import misc.SimpleSavingChelperSolution;
public class ValeraOtrezki extends SimpleSavingChelperSolution {
public void solve(int testNumber, InputReader in, OutputWriter out) {
wrapSolve(testNumber, in, out);
}
class Tree {
final int l, r;
final int m;
int sum = 0;
Tree cl, cr;
public Tree(int l, int r) {
this.l = l;
this.r = r;
m = (l + r) / 2;
// if (r - l == 1) {
// return;
// }
// cl = new Tree(l, m);
// cr = new Tree(m, r);
}
void add(int x) {
sum += 1;
if (r - l == 1) {
return;
}
if (x < m) {
if (cl == null) {
cl = new Tree(l, m);
}
cl.add(x);
} else {
if (cr == null) {
cr = new Tree(m, r);
}
cr.add(x);
}
}
int get(int ll, int rr) {
if (ll == l && rr == r) {
return sum;
}
int res = 0;
if (ll < m && cl != null) {
res += cl.get(ll, Math.min(m, rr));
}
if (rr > m && cr != null) {
res += cr.get(Math.max(m, ll), rr);
}
return res;
}
}
@Override
public void solve(int testNumber) {
int intervalCount = in.nextInt();
int queryCount = in.nextInt();
List<int[]> intervals = new ArrayList<>();
for (int i = 0; i < intervalCount; i++) {
intervals.add(new int[]{in.nextInt(), in.nextInt() + 1});
}
Comparator<int[]> comparator = new Comparator<int[]>() {
@Override
public int compare(int[] o1, int[] o2) {
int t = Integer.compare(o1[1], o2[1]);
if (t != 0) {
return t;
}
return Integer.compare(o1[0], o2[0]);
}
};
Collections.sort(intervals, comparator);
// List<List<Integer>> queries = new ArrayList<>();
int[] queryAnswers = new int[queryCount];
int MAX = 1001000;
Tree tree = new Tree(0, MAX);
List<int[]> points = new ArrayList<>();
// Tree tree = new Tree(0, 1000);
for (int i = 0; i < queryCount; i++) {
int pointCount = in.nextInt();
// queries.add(new ArrayList<>());
int prev = 0;
for (int j = 0; j < pointCount; j++) {
int point = in.nextInt();
// queries.get(i).add(point);
points.add(new int[]{i, point, prev});
prev = point;
// tree.add(point);
}
points.add(new int[]{i, MAX - 1, prev});
}
Collections.sort(points, comparator);
int nextInterval = 0;
for (int[] point : points) {
int queryI = point[0];
int x = point[1];
int prevX = point[2];
while (nextInterval < intervalCount && intervals.get(nextInterval)[1] <= x) {
tree.add(intervals.get(nextInterval)[0]);
nextInterval++;
}
int matching = tree.get(prevX + 1, x);
queryAnswers[queryI] += matching;
}
for (int i = 0; i < queryCount; i++) {
out.println(intervalCount - queryAnswers[i]);
}
/*Random random = new Random();
for (int i = 0; i < 100; i++) {
int l = random.nextInt(100) + 1;
int r = random.nextInt(100) + 1;
if (r < l) {
int t = l;
l = r;
r = t;
}
int res1 = tree.get(l, r);
int res2 = 0;
for (int[] j : points) {
if (j[1] < r && j[1] >= l) {
res2++;
}
}
out.println(res1 + " " + res2);
}*/
}
}

View File

@@ -0,0 +1,33 @@
13 ValeraOtrezki
6 SINGLE
8 STANDARD
9 input.txt
8 STANDARD
10 output.txt
1
0
33 3 3
1 3
4 5
6 7
3 1 4 7
2 4 5
1 8
5 3
1
0
1
11 src/chelper
16 -Xmx256m -Xss64m
4 Main
21 chelper.ValeraOtrezki
39 net.egork.chelper.checkers.TokenChecker
0
0
10 2017.09.15
0
1
14 io.InputReader
15 io.OutputWriter
0
0