Submission #1367984

#TimeUsernameProblemLanguageResultExecution timeMemory
1367984Almonther나일강 (IOI24_nile)C++20
0 / 100
34 ms12856 KiB
#include<bits/stdc++.h>

using namespace std;

#define ll long long
const int maxn=1e5+5;
ll par[maxn],no[maxn];
// ll sol(vector<array<ll,3>>arr,ll d){
//     ll ans=1e18,sum=0,n=arr.size();
//     for(auto i:arr) sum+=i[2];
//     if(n%2==0) return sum;
//     for(int i=0;i<arr.size();i++) if(i%2==0||arr[i+1][0]-arr[i-1][0]<=d) ans=min(ans,sum+arr[i][1]-arr[i][2]);
//     return ans;
// }
ll dsu(ll x){
    if(x==par[x]) return x;
    return par[x]=x;
}
std::vector<long long> calculate_costs(std::vector<int> W, std::vector<int> A,std::vector<int> B, std::vector<int> E){
    ll n=W.size();
    vector<ll>anss;
    array<ll,3>arr[n+5];
    ll ans=0;
    for(int i=0;i<n;i++) arr[i]={W[i],A[i],B[i]},par[i]=i,no[i]=1,ans+=2;
    sort(arr,arr+n);
    set<pair<ll,ll>>diff;
    for(int i=1;i<n;i++) diff.insert({arr[i][0]-arr[i-1][0],i});
    for(auto d:E){
        while(diff.size()&&diff.begin()->first<=d){
            ll x=diff.begin()->second;
            diff.erase(diff.begin());
            ans-=no[dsu(x)]+no[dsu(x)]%2;
            ans-=no[dsu(x-1)]+no[dsu(x-1)]%2;
            no[dsu(x)]+=no[dsu(x-1)];
            par[dsu(x-1)]=dsu(x);
            ans+=no[dsu(x)]+no[dsu(x)]%2;
        }
        anss.push_back(ans);
    }
    return anss;
}
// int main(){
//     calculate_costs({15, 12, 2, 10, 21},
//                 {5, 4, 5, 6, 3},
//                 {1, 2, 2, 3, 2},
//                 {5, 9, 1})
// }
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...
#Result Execution timeMemoryGrader output
Fetching results...