Submission #1240696

#TimeUsernameProblemLanguageResultExecution timeMemory
1240696dostsClosing Time (IOI23_closing)C++20
0 / 100
1165 ms1848460 KiB
#include "closing.h"
#include <bits/stdc++.h>
#pragma GCC optimize("O3,unroll-loops")
#pragma GCC target("avx2")
#define int long long
#define pii pair<int,int>
#define vi vector<int>
#define ff first
#define ss second
#define sp << " " <<
#define all(x) x.begin(),x.end()
#define big(x) ((int)(x.size()))
using namespace std;
const int MOD = 1e9+7, LIM = 2e5+1, inf = 2e18;

vector<pii> edges[LIM];
vi distX(LIM),distY(LIM);
void dfs(int node,int p,int flag,int cur) {
    if (!flag) distX[node] = cur;
    else distY[node] = cur;
    for (auto it : edges[node]) {
        if (it.ff == p) continue;
        dfs(it.ff,node,flag,cur+it.ss);
    }
}

signed max_score(signed N, signed X, signed Y, int K,
              std::vector<signed> U, std::vector<signed> V, std::vector<signed> W)
{
    int M = big(U);
    for (int i = 0;i<M;i++) { 
        edges[U[i]].push_back({V[i],W[i]});
        edges[V[i]].push_back({U[i],W[i]});
    }
    dfs(X,X,0,0),dfs(Y,Y,1,0);
    if (distX[Y] > 2*K) {
        vi v;
        for (int i = 0;i<N;i++) v.push_back(distX[i]),v.push_back(distY[i]);
        sort(all(v));
        int ans = 0;
        for (auto it : v) {
            if (it <= K) {
                K-=it;
                ans++;
            }else break;
        }
        return ans;
    }
    return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...