QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#585173#140. Palembang Bridges isirazeev0 3ms3748kbC++202.6kb2024-09-23 19:30:262024-09-23 19:30:28

Judging History

你现在查看的是最新测评结果

  • [2024-09-23 19:30:28]
  • 评测
  • 测评结果:0
  • 用时:3ms
  • 内存:3748kb
  • [2024-09-23 19:30:26]
  • 提交

answer

#include <bits/stdc++.h>

using namespace std;

const int maxC = (int) 1e9 + 1;

struct Node {
    int val, add;
    Node *l, *r;

    Node() : val(0), add(0), l(nullptr), r(nullptr) {};
};

void createSon(Node *v) {
    if (v->l == nullptr)
        v->l = new Node();
    if (v->r == nullptr)
        v->r = new Node();
}

void push(Node *v, int l, int r) {
    if (v->add == 0) return;
    v->val += v->add * (r - l + 1);
    if (l != r) {
        createSon(v);
        v->l->add += v->add, v->r->add += v->add;
    }
    v->add = 0;
}

void update(Node *v, int l, int r, int tl, int tr, int add) {
    push(v, l, r);
    if (l > tr || r < tl)
        return;
    if (l >= tl && r <= tr) {
        v->add += add;
        push(v, l, r);
        return;
    }
    int mid = (l + r) / 2;
    createSon(v);
    update(v->l, l, mid, tl, tr, add);
    update(v->r, mid + 1, r, tl, tr, add);
    v->val = v->l->val + v->r->val;
}

int get_sum(Node *v, int l, int r, int tl, int tr) {
    push(v, l, r);
    if (l > tr || r < tl)
        return 0;
    if (l >= tl && r <= tr)
        return v->val;
    int mid = (l + r) / 2;
    createSon(v);
    return get_sum(v->l, l, mid, tl, tr)
           + get_sum(v->r, mid + 1, r, tl, tr);
}

void Add(Node *v, int x) {
    update(v, 0, maxC, 1, x, -1);
    update(v, 0, maxC, 0, 0, x);
    update(v, 0, maxC, x + 1, maxC, 1);
}

void Del(Node *v, int x) {
    update(v, 0, maxC, 1, x - 1, 1);
    update(v, 0, maxC, 0, 0, -x);
    update(v, 0, maxC, x + 1, maxC, -1);
}

int get(Node *v, int x) {
    return get_sum(v, 0, maxC, 0, x);
}

Node *r1 = new Node(), *r2 = new Node();

int find_ans(Node *v) {
    int l = 0, r = maxC;
    while (r - l > 1) {
        int mid = (l + r) / 2;
        if (get(v, mid) <= get(v, mid - 1)) l = mid;
        else r = mid;
    }
    return get(v, l);
}

signed main() {
    ios_base::sync_with_stdio(false);
    cin.tie(nullptr), cout.tie(nullptr);
    int k, n, add = 0;
    cin >> k >> n;
    vector<int> s, t;
    for (int i = 0; i < n; i++) {
        char p, q;
        int S, T;
        cin >> p >> S >> q >> T;
        if (S < T) swap(S, T);
        if (p == q) {
            add += S - T;
        } else {
            s.emplace_back(S), t.emplace_back(T);
        }
    }
    n = (int) s.size();
    if (n == 0) {
        cout << add;
        return 0;
    }
    if (k == 1) {
        for (int i = 0; i < n; i++)
            Add(r1, s[i]), Add(r1, t[i]);
        cout << find_ans(r1) + add + n;
        return 0;
    }
    return 0;
}

詳細信息

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 8
Accepted
time: 0ms
memory: 3484kb

input:

1 1
B 426311872 B 741424667

output:

315112795

result:

ok single line: '315112795'

Test #2:

score: 0
Wrong Answer
time: 3ms
memory: 3600kb

input:

1 1000
A 1000000000 B 1000000000
B 1000000000 A 1000000000
A 500000000 B 500000000
A 1000000000 B 1000000000
B 0 A 0
A 500000000 B 500000000
B 0 A 0
A 1000000000 B 1000000000
A 500000000 B 500000000
A 1000000000 B 1000000000
B 1000000000 A 1000000000
A 0 B 0
B 0 A 0
B 0 A 0
A 500000000 B 500000000
B...

output:

1870004712

result:

wrong answer 1st lines differ - expected: '659000001000', found: '1870004712'

Subtask #2:

score: 0
Skipped

Dependency #1:

0%

Subtask #3:

score: 0
Wrong Answer

Test #22:

score: 9
Accepted
time: 0ms
memory: 3476kb

input:

2 1
B 822190955 B 309099167

output:

513091788

result:

ok single line: '513091788'

Test #23:

score: 0
Wrong Answer
time: 0ms
memory: 3748kb

input:

2 100
A 699479271 B 699479270
B 999432953 A 999432956
A 657124443 B 657124444
B 928721383 A 928721383
B 809218485 A 809218487
B 220719335 A 220719338
B 93242937 A 93242943
A 566737518 B 566737523
A 751211620 B 751211614
B 799605314 A 799605321
A 634052514 B 634052513
B 681923789 A 681923799
B 377862...

output:


result:

wrong answer 1st lines differ - expected: '22963819679', found: ''

Subtask #4:

score: 0
Skipped

Dependency #3:

0%

Subtask #5:

score: 0
Skipped

Dependency #4:

0%