This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include "teams.h"
#include <bits/stdc++.h>
using namespace std;
const int MAX_N = 5e5, MAX_SEG = 5e6, B_SIZE = MAX_N;
int seg_val[MAX_SEG], left_c[MAX_SEG], right_c[MAX_SEG];
struct Segtree {
map<int, int> points[MAX_N + 1];
int roots[MAX_N + 2], cnt = 1;
void build() {
for (int i = 1; i <= MAX_N; i++) {
roots[i + 1] = roots[i];
for (pair<int, int> j : points[i]) {
update(j.first, j.second, roots[i + 1]);
}
}
}
void update(int pos, int val, int &node, int l = 1, int r = MAX_N) {
seg_val[cnt] = seg_val[node] + val;
node = cnt++;
if (l == r) return;
int mid = (l + r) / 2;
if (pos > mid) update(pos, val, right_c[node], mid + 1, r);
else update(pos, val, left_c[node], l, mid);
}
int query(int a, int b, int node, int l, int r) {
if (a > r || b < l) return 0;
if (a <= l && b >= r) return seg_val[node];
int mid = (l + r) / 2;
return query(a, b, left_c[node], l, mid) + query(a, b, right_c[node], mid + 1, r);
}
int query(int a1, int a2, int b) {
return query(a1, a2, roots[MAX_N + 1], 1, MAX_N) - query(a1, a2, roots[b], 1, MAX_N);
}
} segtree;
int N;
pair<int, int> s[MAX_N];
bool visited[MAX_N];
void init(int N, int A[], int B[]) {
::N = N;
for (int i = 0; i < N; i++) {
s[i] = {B[i], A[i]};
segtree.points[A[i]][B[i]]++;
}
sort(s, s + N);
segtree.build();
}
int can(int M, int K[]) {
sort(K, K + M);
if (M > B_SIZE) {
memset(visited, 0, sizeof visited);
for (int i = 0; i < M; i++) {
int cnt = 0;
for (int j = 0; j < N && cnt != K[i]; j++) {
if (K[i] <= s[j].first && K[i] >= s[j].second && !visited[j]) {
cnt++;
visited[j] = true;
}
}
if (cnt != K[i]) return 0;
}
return 1;
} else {
return 1;
}
}
Compilation message (stderr)
teams.cpp: In function 'void init(int, int*, int*)':
teams.cpp:48:34: warning: declaration of 'N' shadows a global declaration [-Wshadow]
void init(int N, int A[], int B[]) {
^
teams.cpp:44:5: note: shadowed declaration is here
int N;
^
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |