This commit is contained in:
Zengtudor 2025-07-17 10:28:09 +08:00
parent f485391c43
commit e2b339fa8e
7 changed files with 200024 additions and 14 deletions

2
src/7/17/Summer0.in Normal file
View File

@ -0,0 +1,2 @@
1
1 100000

1
src/7/17/Summer0.out Normal file
View File

@ -0,0 +1 @@
199997

100001
src/7/17/Summer1.in Normal file

File diff suppressed because it is too large Load Diff

1
src/7/17/Summer1.out Normal file
View File

@ -0,0 +1 @@
2264964024

100001
src/7/17/Summer2.in Normal file

File diff suppressed because it is too large Load Diff

1
src/7/17/Summer2.out Normal file
View File

@ -0,0 +1 @@
66329177774288

View File

@ -1,32 +1,35 @@
#include <cstdint>
#include <iostream> #include <iostream>
#include <vector> #include <vector>
#include <algorithm> #include <algorithm>
using namespace std; using namespace std;
const int MAX_N = 100000; using ll = int64_t;
const ll MAX_N = 100000;
struct Sm { struct Sm {
vector<int> tree; vector<ll> tree;
int n; ll n;
Sm(int size) { Sm(ll size) {
n = size; n = size;
tree.assign(n + 1, 0); tree.assign(n + 1, 0);
} }
void update(int i, int v) { void update(ll i, ll v) {
while (i <= n) { while (i <= n) {
tree[i] += v; tree[i] += v;
i += i & -i; i += i & -i;
} }
} }
int query(int i) { ll query(ll i) {
int sum = 0; ll sum = 0;
while (i) { while (i) {
sum += tree[i]; sum += tree[i];
i -= i & -i; i -= i & -i;
} }
return sum; return sum;
} }
int query(int l, int r) { ll query(ll l, ll r) {
if (l > r) return 0; if (l > r) return 0;
return query(r) - query(l - 1); return query(r) - query(l - 1);
} }
@ -35,14 +38,14 @@ struct Sm {
int main() { int main() {
ios::sync_with_stdio(false); ios::sync_with_stdio(false);
cin.tie(0); cin.tie(0);
int k; ll k;
cin >> k; cin >> k;
vector<int> arr(MAX_N + 1); vector<ll> arr(MAX_N + 1);
for (int i = 1; i <= MAX_N; i++) { for (ll i = 1; i <= MAX_N; i++) {
arr[i] = i; arr[i] = i;
} }
for (int i = 0; i < k; i++) { for (ll i = 0; i < k; i++) {
int x, y; ll x, y;
cin >> x >> y; cin >> x >> y;
if (x <= MAX_N && y <= MAX_N) { if (x <= MAX_N && y <= MAX_N) {
swap(arr[x], arr[y]); swap(arr[x], arr[y]);
@ -50,7 +53,7 @@ int main() {
} }
Sm sm(MAX_N); Sm sm(MAX_N);
long long ans = 0; long long ans = 0;
for (int j = 1; j <= MAX_N; j++) { for (ll j = 1; j <= MAX_N; j++) {
if (arr[j] < MAX_N) { if (arr[j] < MAX_N) {
ans += sm.query(arr[j] + 1, MAX_N); ans += sm.query(arr[j] + 1, MAX_N);
} }