Submission #65693191
Source Code Expand
Copy
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
הההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההההה
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
#ifndef _Alignof
#define _Alignof __alignof__
#endif
#include <bits/stdc++.h>
#include <numeric>
#include <iomanip>
#define LOOP(n) for (int _i = 0; _i < (n); _i++)
#define REP(i, n) for (int i = 0; i < (n); ++i)
#define RREP(i, n) for (int i = (n); i >= 0; --i)
#define FOR(i, r, n) for (int i = (r); i < (n); ++i)
#define ALL(obj) begin(obj), end(obj)
#define yes "Yes"
#define no "No"
using namespace std;
typedef long long ll;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<ll,int> pli;
typedef pair<int,ll> pil;
typedef vector<vector<int>> vvi;
typedef vector<vector<ll>> vvl;
const vector<char> alpha = {'a','b','c','d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'};
int dx[4] = {0, 1, 0, -1};
int dy[4] = {1, 0, -1, 0};
const ll INF = 1e9+7;
const ll MOD = 998244353;
template <typename T> bool chmax(T &a, T b) {if (a < b) {a = b;return true;}return false;}
template <typename T> bool chmin(T &a, T b) {if (a > b) {a = b;return true;}return false;}
using namespace std;
typedef pair<int,int> pii;
struct BIT {
int n;
vector<int> t;
BIT(int _n): n(_n), t(n+1,0) {}
void add(int i, int v=1) { for(; i<=n; i+=i&-i) t[i]+=v; }
int sum(int i) const { int s=0; for(; i>0; i-=i&-i) s+=t[i]; return s; }
};
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
int N, M;
cin >> N >> M;
int maxP = 2*N;
vector<pair<int,int>> chords(M);
vector<int> endpoints_cnt(maxP+2, 0), Bi_cnt(maxP+2, 0);
for(int i=0;i<M;i++){
int A, B;
cin >> A >> B;
chords[i] = {A, B};
endpoints_cnt[A]++;
endpoints_cnt[B]++;
Bi_cnt[B]++;
}
vector<int> endpoints_ps(maxP+2,0), Bi_ps(maxP+2,0);
for(int i=1;i<=maxP;i++){
endpoints_ps[i] = endpoints_ps[i-1] + endpoints_cnt[i];
Bi_ps[i] = Bi_ps[i-1] + Bi_cnt[i];
}
int Q;
cin >> Q;
struct Query{int C,D,idx,tot;};
vector<Query> qs(Q);
for(int i=0;i<Q;i++){
int C,D;
cin >> C >> D;
qs[i] = {C, D, i, endpoints_ps[D-1] - endpoints_ps[C]};
}
sort(chords.begin(), chords.end(), [](auto &a, auto &b){
return a.first < b.first;
});
vector<int> order(Q);
iota(order.begin(), order.end(), 0);
sort(order.begin(), order.end(), [&](int i, int j){
return qs[i].C < qs[j].C;
});
BIT bit(maxP+1);
vector<int> ans(Q);
int p = 0;
for(int oi=0; oi<Q; oi++){
int qi = order[oi];
int C = qs[qi].C;
int D = qs[qi].D;
while(p < M && chords[p].first <= C){
bit.add(chords[p].second, 1);
p++;
}
int f = bit.sum(D-1);
int inside = Bi_ps[D-1] - f;
ans[qs[qi].idx] = qs[qi].tot - 2*inside;
}
for(int i=0;i<Q;i++){
cout << ans[i] << endl;
}
}
Submission Info
| Submission Time |
|
| Task |
F - Chord Crossing |
| User |
una_o0 |
| Language |
C++ 17 (gcc 12.2) |
| Score |
525 |
| Code Size |
2958 Byte |
| Status |
AC |
| Exec Time |
347 ms |
| Memory |
48548 KiB |
Judge Result
| Set Name |
Sample |
All |
| Score / Max Score |
0 / 0 |
525 / 525 |
| Status |
|
|
| Set Name |
Test Cases |
| Sample |
00_sample_00.txt, 00_sample_01.txt |
| All |
00_sample_00.txt, 00_sample_01.txt, 01_small_00.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 01_small_06.txt, 01_small_07.txt, 01_small_08.txt, 01_small_09.txt, 02_large_00.txt, 02_large_01.txt, 02_large_02.txt, 02_large_03.txt, 02_large_04.txt, 02_large_05.txt, 02_large_06.txt, 02_large_07.txt, 02_large_08.txt, 02_large_09.txt, 02_large_10.txt, 02_large_11.txt, 02_large_12.txt, 02_large_13.txt, 02_large_14.txt, 02_large_15.txt, 02_large_16.txt, 02_large_17.txt, 02_large_18.txt, 02_large_19.txt, 03_handmade_00.txt, 03_handmade_01.txt, 03_handmade_02.txt, 03_handmade_03.txt, 03_handmade_04.txt, 03_handmade_05.txt, 03_handmade_06.txt, 03_handmade_07.txt |
| Case Name |
Status |
Exec Time |
Memory |
| 00_sample_00.txt |
AC |
1 ms |
3488 KiB |
| 00_sample_01.txt |
AC |
1 ms |
3444 KiB |
| 01_small_00.txt |
AC |
213 ms |
7744 KiB |
| 01_small_01.txt |
AC |
213 ms |
7728 KiB |
| 01_small_02.txt |
AC |
214 ms |
7736 KiB |
| 01_small_03.txt |
AC |
214 ms |
7732 KiB |
| 01_small_04.txt |
AC |
212 ms |
7760 KiB |
| 01_small_05.txt |
AC |
213 ms |
7808 KiB |
| 01_small_06.txt |
AC |
213 ms |
7764 KiB |
| 01_small_07.txt |
AC |
213 ms |
7756 KiB |
| 01_small_08.txt |
AC |
214 ms |
7756 KiB |
| 01_small_09.txt |
AC |
213 ms |
7728 KiB |
| 02_large_00.txt |
AC |
294 ms |
44448 KiB |
| 02_large_01.txt |
AC |
321 ms |
47420 KiB |
| 02_large_02.txt |
AC |
298 ms |
46020 KiB |
| 02_large_03.txt |
AC |
316 ms |
45248 KiB |
| 02_large_04.txt |
AC |
318 ms |
47652 KiB |
| 02_large_05.txt |
AC |
305 ms |
47356 KiB |
| 02_large_06.txt |
AC |
283 ms |
46824 KiB |
| 02_large_07.txt |
AC |
314 ms |
44700 KiB |
| 02_large_08.txt |
AC |
282 ms |
43704 KiB |
| 02_large_09.txt |
AC |
326 ms |
48124 KiB |
| 02_large_10.txt |
AC |
336 ms |
48460 KiB |
| 02_large_11.txt |
AC |
336 ms |
48420 KiB |
| 02_large_12.txt |
AC |
340 ms |
48448 KiB |
| 02_large_13.txt |
AC |
330 ms |
48480 KiB |
| 02_large_14.txt |
AC |
330 ms |
48464 KiB |
| 02_large_15.txt |
AC |
345 ms |
48476 KiB |
| 02_large_16.txt |
AC |
347 ms |
48396 KiB |
| 02_large_17.txt |
AC |
335 ms |
48408 KiB |
| 02_large_18.txt |
AC |
336 ms |
48428 KiB |
| 02_large_19.txt |
AC |
329 ms |
48548 KiB |
| 03_handmade_00.txt |
AC |
1 ms |
3440 KiB |
| 03_handmade_01.txt |
AC |
325 ms |
48492 KiB |
| 03_handmade_02.txt |
AC |
291 ms |
48424 KiB |
| 03_handmade_03.txt |
AC |
307 ms |
48548 KiB |
| 03_handmade_04.txt |
AC |
297 ms |
48496 KiB |
| 03_handmade_05.txt |
AC |
307 ms |
48388 KiB |
| 03_handmade_06.txt |
AC |
291 ms |
48388 KiB |
| 03_handmade_07.txt |
AC |
330 ms |
48456 KiB |