답안 #787519

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
787519 2023-07-19T08:58:09 Z doowey Measures (CEOI22_measures) C++17
35 / 100
223 ms 26616 KB
#include <bits/stdc++.h>

using namespace std;

typedef long long ll;
typedef pair<ll, int> pii;

#define fi first
#define se second
#define mp make_pair
#define fastIO ios::sync_with_stdio(false);cin.tie(0);cout.tie(0);

const int N = (int)2e5 + 40;

vector<pii> P;
vector<ll> p;

ll D;

struct Node{
    ll res;
    ll i_val;
    ll j_val;
    ll lazy;
};

Node T[N * 4 + 100];

Node unite(Node A, Node B){
    Node nw;
    nw.res = max(A.res, B.res);
    nw.i_val = max(A.i_val, B.i_val);
    nw.j_val = max(A.j_val, B.j_val);
    nw.res = max(nw.res, B.i_val + A.j_val);
    nw.lazy = 0ll;
    return nw;
}

const ll inf = (ll)1e18;

void build(int node, int cl, int cr){
    if(cl == cr){
        T[node].i_val = -inf;
        T[node].j_val = -inf;
        return;
    }
    int mid = (cl + cr) / 2;
    build(node * 2, cl, mid);
    build(node * 2 + 1, mid + 1, cr);
    T[node]=unite(T[node*2],T[node*2+1]);
}

void push(int node, int cl, int cr){
    if(T[node].lazy == 0) return;
    T[node].i_val += D * 1ll * T[node].lazy;
    T[node].j_val -= D * 1ll * T[node].lazy;
    if(cl != cr){
        T[node*2+1].lazy += T[node].lazy;
        T[node*2].lazy += T[node].lazy;
    }
    T[node].lazy = 0;
}



void set_pos(int node, int cl, int cr, int id){
    push(node, cl, cr);
    if(cl == cr){
        T[node].i_val += inf-P[id].fi;
        T[node].j_val += inf+P[id].fi;
        T[node].res = 0ll;
        return;
    }
    int mid = (cl + cr) / 2;
    if(mid >= id)
        set_pos(node * 2, cl, mid, id);
    else
        set_pos(node * 2 + 1, mid + 1, cr, id);
    T[node] = unite(T[node*2],T[node*2+1]);
}

void inc(int node, int cl, int cr, int tl, int tr, int v){
    push(node, cl, cr);
    if(cr < tl || cl > tr) return;
    if(cl >= tl && cr <= tr){
        T[node].lazy = v;
        push(node, cl, cr);
        return;
    }
    int mid = (cl + cr) / 2;
    inc(node * 2, cl, mid, tl, tr, v);
    inc(node * 2 + 1, mid + 1, cr, tl, tr, v);
    T[node]=unite(T[node*2],T[node*2+1]);
}

int main(){
    fastIO;
    //freopen("in.txt", "r", stdin);
    int n, m;
    cin >> n >> m >> D;
    p.resize(n + m);
    for(int i = 0 ; i < n; i ++ ){
        cin >> p[i];
    }
    for(int i = n ; i < n + m; i ++ ){
        cin >> p[i];
    }
    for(int i = 0 ; i < n + m ; i ++) {
        P.push_back(mp(p[i], i));
    }
    sort(P.begin(), P.end());
    build(1, 0, n + m - 1);
    int id;
    for(int i = 0 ; i < n + m ; i ++ ){
        id = lower_bound(P.begin(), P.end(), mp(p[i], i)) - P.begin();
        set_pos(1, 0, n + m - 1, id);
        inc(1, 0, n + m - 1, id, n + m - 1, +1);
        if(i >= n){
            cout << T[1].res / 2ll;
            if(T[1].res % 2 != 0) cout << ".5 ";
            else cout << " ";
        }
    }
    return 0;
}

# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 468 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 468 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 129 ms 23100 KB Output is correct
2 Correct 138 ms 26468 KB Output is correct
3 Correct 135 ms 26352 KB Output is correct
4 Correct 128 ms 24184 KB Output is correct
5 Correct 134 ms 25580 KB Output is correct
6 Correct 136 ms 24636 KB Output is correct
7 Correct 129 ms 25556 KB Output is correct
8 Correct 152 ms 24340 KB Output is correct
9 Correct 126 ms 24168 KB Output is correct
10 Correct 134 ms 26616 KB Output is correct
11 Correct 136 ms 25012 KB Output is correct
12 Correct 132 ms 26028 KB Output is correct
13 Correct 126 ms 24248 KB Output is correct
14 Correct 137 ms 26168 KB Output is correct
15 Correct 137 ms 26044 KB Output is correct
16 Correct 133 ms 23888 KB Output is correct
17 Correct 131 ms 25512 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 129 ms 23100 KB Output is correct
2 Correct 138 ms 26468 KB Output is correct
3 Correct 135 ms 26352 KB Output is correct
4 Correct 128 ms 24184 KB Output is correct
5 Correct 134 ms 25580 KB Output is correct
6 Correct 136 ms 24636 KB Output is correct
7 Correct 129 ms 25556 KB Output is correct
8 Correct 152 ms 24340 KB Output is correct
9 Correct 126 ms 24168 KB Output is correct
10 Correct 134 ms 26616 KB Output is correct
11 Correct 136 ms 25012 KB Output is correct
12 Correct 132 ms 26028 KB Output is correct
13 Correct 126 ms 24248 KB Output is correct
14 Correct 137 ms 26168 KB Output is correct
15 Correct 137 ms 26044 KB Output is correct
16 Correct 133 ms 23888 KB Output is correct
17 Correct 131 ms 25512 KB Output is correct
18 Incorrect 223 ms 25492 KB Output isn't correct
19 Halted 0 ms 0 KB -