Submission #966388

# Submission time Handle Problem Language Result Execution time Memory
966388 2024-04-19T19:10:33 Z VMaksimoski008 Closing Time (IOI23_closing) C++17
0 / 100
1000 ms 1018484 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;
    }

    return ans;
}

Compilation message

closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:27:10: warning: variable 'line' set but not used [-Wunused-but-set-variable]
   27 |     bool line = 1;
      |          ^~~~
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 120 ms 32764 KB Output is correct
2 Correct 133 ms 39152 KB Output is correct
3 Execution timed out 1070 ms 1018484 KB Time limit exceeded
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB 1st lines differ - on the 1st token, expected: '30', found: '24'
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB 1st lines differ - on the 1st token, expected: '30', found: '24'
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Incorrect 1 ms 348 KB 1st lines differ - on the 1st token, expected: '30', found: '24'
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 1 ms 348 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -