Submission #992724

# Submission time Handle Problem Language Result Execution time Memory
992724 2024-06-05T06:23:07 Z stdfloat Closing Time (IOI23_closing) C++17
21 / 100
1000 ms 25324 KB
#include <bits/stdc++.h>
#include "closing.h"
using namespace std;

#define ff  first
#define ss  second
#define pii pair<int, int>

using ll = long long;

vector<bool> vis;

vector<ll> c;

vector<vector<pii>> E;

bool dfs(int x, int p = -1, ll sm = 0) {
    bool tr = false;

    if (vis[x]) {
        tr = true;
        c[x] = max(c[x], sm);
    }

    for (auto [i, w] : E[x]) {
        if (i != p && dfs(i, x, sm + w)) {
            tr = true;
            c[x] = max(c[x], sm);
        }
    }

    return tr;
}


int max_score(int n, int X, int Y, long long K, vector<int> U, vector<int> V, vector<int> W) {
    E.assign(n, {});
    for (int i = 0; i < n - 1; i++) {
        E[U[i]].push_back({V[i], W[i]});
        E[V[i]].push_back({U[i], W[i]});
    }

    auto f = [&](int st) -> vector<ll> {
        queue<int> q;
        vector<ll> dis(n, -1);
        q.push(st); dis[st] = 0;
        while (!q.empty()) {
            auto x = q.front(); q.pop();

            for (auto [i, w] : E[x]) {
                if (dis[i] == -1) {
                    dis[i] = dis[x] + w;
                    q.push(i);
                }
            }
        }

        return dis;
    };

    vector<ll> disx = f(X), disy = f(Y);

    vector<pii> v;
    for (int i = 0; i < n; i++) {
        if ((int)E[i].size() == 1) {
            v.push_back({i, 0});
            
            queue<int> q;
            vector<bool> vis(n);
            q.push(i); vis[i] = true;
            while (!q.empty()) {
                auto x = q.front(); q.pop();

                for (auto [j, w] : E[x]) {
                    if (!vis[j]) {
                        q.push(j);
                        vis[j] = true;
                        v.push_back({j, w});
                    }
                }
            }
        
            break;
        }
    }

    for (auto [i, w] : v) {
        if (i == X || i == Y) {
            if (i == Y) swap(X, Y);
            break;
        }
    }

    int a = -1, b = -1;
    for (int i = 0; i < (int)v.size(); i++) {
        if (v[i].ff == X) a = i;
        else if (v[i].ff == Y) b = i;
    }

    if (b == -1) b = a;

    vector<int> u;
    for (int k = 0; k < n; k++)
        u.push_back(min(disx[v[k].ff], disy[v[k].ff]));

    sort(u.begin(), u.end());

    ll sm = 0;
    int cnt = 0;
    for (auto i : u) {
        if ((sm += i) <= K) cnt++;
        else break;
    }

    int mx = cnt;
    for (int i = 0; i < n; i++) {
        for (int j = i; j < n; j++) {
            vector<ll> c(n, -1);
            for (auto x : {a, b}) {
                for (auto y : {i, j}) {
                    ll sm = 0;
                    c[x] = max(c[x], 0LL);
                    if (y <= x) {
                        for (int k = x - 1; k >= y; k--)
                            c[k] = max(c[k], sm += v[k + 1].ss);
                    }
                    else {
                        for (int k = x + 1; k <= y; k++)
                            c[k] = max(c[k], sm += v[k].ss);
                    }
                }
            }

            ll sm = 0;
            for (auto k : c)
                if (k != -1) sm += k;

            if (sm > K) break;

            vector<int> u;
            for (int k = 0; k < n; k++)
                if (c[k] == -1) u.push_back(min(disx[v[k].ff], disy[v[k].ff]));

            sort(u.begin(), u.end());

            int cnt = 0;
            for (int i = 0; i < n; i++)
                if (c[i] != -1) cnt += 1 + (c[i] != min(disx[i], disy[i]));

            for (auto i : u) {
                if ((sm += i) <= K) cnt++;
                else break;
            }

            mx = max(mx, cnt);
        }
    }

    assert(a != b);

    return mx + (a == b ? mx : 0);
}
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '6', found: '8'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1056 ms 25324 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 3 ms 444 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 2 ms 348 KB Output is correct
19 Correct 443 ms 472 KB Output is correct
20 Correct 2 ms 344 KB Output is correct
21 Correct 386 ms 460 KB Output is correct
22 Correct 1 ms 348 KB Output is correct
23 Correct 1 ms 492 KB Output is correct
24 Correct 1 ms 348 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 0 ms 348 KB Output is correct
4 Correct 1 ms 348 KB Output is correct
5 Correct 1 ms 348 KB Output is correct
6 Correct 1 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 1 ms 348 KB Output is correct
9 Correct 0 ms 348 KB Output is correct
10 Correct 0 ms 348 KB Output is correct
11 Correct 1 ms 344 KB Output is correct
12 Correct 3 ms 348 KB Output is correct
13 Correct 1 ms 348 KB Output is correct
14 Correct 3 ms 444 KB Output is correct
15 Correct 0 ms 348 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 2 ms 348 KB Output is correct
19 Correct 443 ms 472 KB Output is correct
20 Correct 2 ms 344 KB Output is correct
21 Correct 386 ms 460 KB Output is correct
22 Correct 1 ms 348 KB Output is correct
23 Correct 1 ms 492 KB Output is correct
24 Correct 1 ms 348 KB Output is correct
25 Correct 31 ms 348 KB Output is correct
26 Execution timed out 1033 ms 600 KB Time limit exceeded
27 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '6', found: '8'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '6', found: '8'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '6', found: '8'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '6', found: '8'
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 0 ms 348 KB 1st lines differ - on the 1st token, expected: '6', found: '8'
2 Halted 0 ms 0 KB -