답안 #966390

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
966390 2024-04-19T19:13:45 Z VMaksimoski008 봉쇄 시간 (IOI23_closing) C++17
17 / 100
123 ms 36904 KB
#include "closing.h"
#include <bits/stdc++.h>
using namespace std;

int n, x, y;
long long k;
vector<vector<pair<int, int> >> graph;
const int maxn = 2e5 + 5;
using ll = long long;
ll dist[2][maxn];

void dfs(int u, int p, int t) {
    for(auto &[v, w] : graph[u]) {
        if(v == p) continue;
        dist[t][v] = dist[t][u] + w;
        dfs(v, u, t);
    }
}

int max_score(int N, int X, int Y, long long K, std::vector<int> U, std::vector<int> V, std::vector<int> W) {
    n = N;
    x = X;
    y = Y;
    k = K;
    graph.resize(n);

    bool line = 1;
    for(int i=0; i<n-1; i++) {
        if(abs(U[i] - V[i]) != 1) line = 0;
        graph[U[i]].push_back({ V[i], W[i] });
        graph[V[i]].push_back({ U[i], W[i] });
    }

    if(line && n <= 50) {
        int ans = 0;
        dfs(x, x, 0);
        dfs(y, y, 1);

        for(int a=x; a<n; a++) {
            for(int b=x; b>=0; b--) {
                for(int c=y; c<n; c++) {
                    for(int d=y; d>=0; d--) {
                        ll total = 0;
                        for(int i=0; i<n; i++) {
                            ll curr = 0;
                            if(b <= i && i <= a) curr = max(curr, dist[0][i]);
                            if(d <= i && i <= c) curr = max(curr, dist[1][i]);
                            total += curr;
                        }

                        if(total <= k) ans = max(ans, a - b + c - d);
                    }
                }
            }
        }

        return ans + 2;
    }

    int ans = 0;
    ll total = k;
    dfs(x, x, 0);
    dfs(y, y, 1);
    
    vector<ll> v;
    for(int i=0; i<2; i++)
        for(int j=0; j<n; j++) v.push_back(dist[i][j]);
    sort(v.begin(), v.end());

    for(auto &x : v) {
        if(x > total) break;
        ans++;
        total -= x;
    }

    for(int i=0; i<n; i++) {
        graph[i].clear();
        for(int j=0; j<2; j++) dist[j][i] = 0;
    }

    return ans;
}
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 122 ms 30080 KB Output is correct
2 Correct 123 ms 36904 KB Output is correct
3 Correct 66 ms 3044 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 42 ms 344 KB Output is correct
7 Correct 33 ms 600 KB Output is correct
8 Correct 13 ms 344 KB Output is correct
9 Correct 2 ms 344 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 42 ms 344 KB Output is correct
7 Correct 33 ms 600 KB Output is correct
8 Correct 13 ms 344 KB Output is correct
9 Correct 2 ms 344 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Incorrect 1 ms 348 KB 1st lines differ - on the 1st token, expected: '173', found: '132'
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 344 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 42 ms 344 KB Output is correct
7 Correct 33 ms 600 KB Output is correct
8 Correct 13 ms 344 KB Output is correct
9 Correct 2 ms 344 KB Output is correct
10 Correct 1 ms 344 KB Output is correct
11 Correct 1 ms 348 KB Output is correct
12 Incorrect 1 ms 348 KB 1st lines differ - on the 1st token, expected: '173', found: '132'
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 1 ms 344 KB 1st lines differ - on the 1st token, expected: '6', found: '5'
2 Halted 0 ms 0 KB -