답안 #1109929

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1109929 2024-11-08T06:33:35 Z KasymK 나일강 (IOI24_nile) C++17
0 / 100
36 ms 6080 KB
#include "bits/stdc++.h"
using namespace std;
#define ff first
#define ss second
#define all(v) v.begin(), v.end()
#define ll long long
#define pb push_back
#define pii pair<int, int>
#define pli pair<ll, int>
#define pll pair<ll, ll>
#define tr(i, c) for(auto i = c.begin(); i != c.end(); ++i)
#define wr puts("----------------")
template<class T>bool umin(T& a,T b){if(a>b){a=b;return 1;}return 0;}
template<class T>bool umax(T& a,T b){if(a<b){a=b;return 1;}return 0;}
const int N = 1e5+5;
int rep[N], sz[N], n, answer;

void init(){
    for(int i = 0; i < n; ++i)
        rep[i] = i, sz[i] = 1;
    answer = 2*n;
}

int find(int x){
    if(rep[x]==x)
        return x;
    return rep[x]=find(rep[x]);
}

void merge(int a, int b){
    a = find(a), b = find(b);
    if(sz[a]<sz[b])
        swap(a, b);
    sz[a] += sz[b];
    rep[b] = a;
    if(a&1 or b&1)
        answer -= 2;
}

vector<ll> calculate_costs(vector<int> W, vector<int> A, vector<int> B, vector<int> E){
    n = (int)W.size();
    vector<pii> v;
    for(int i = 0; i < n; ++i)
        v.pb({W[i], i});
    sort(all(v));
    vector<array<int, 3>> as;
    for(int i = 1; i < n; ++i)
        as.pb({v[i].ff-v[i-1].ff, v[i].ss, v[i-1].ss});
    sort(all(as));
    init();
    vector<pii> Q;
    for(int i = 0; i < (int)E.size(); ++i)
        Q.pb({E[i], i});
    vector<ll> ans((int)Q.size());
    int ii = 0;
    for(auto &d : Q){
        while(ii<(int)as.size() and as[ii][0]<=d.ff)
            merge(as[ii][1], as[ii][2]), ii++;
        ans[d.ss] = answer;
    }
    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 336 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 336 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 31 ms 6080 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 36 ms 6080 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 336 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 2 ms 336 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 36 ms 6080 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 336 KB Output isn't correct
2 Halted 0 ms 0 KB -