답안 #962536

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
962536 2024-04-13T18:54:17 Z tutis 봉쇄 시간 (IOI23_closing) C++17
컴파일 오류
0 ms 0 KB
#include "closing.h"

#include <bits/stdc++.h>

using namespace std;
typename long long ll;

int max_score(int N, int X, int Y, long long K,
              vector<int> U, vector<int> V, vector<int> W) {
    vector <pair<int, int>> adj[N];
    for (int i = 0; i < N - 1; i++) {
        adj[U[i]].push_back({V[i], W[i]});
        adj[V[i]].push_back({U[i], W[i]});
    }
    ll D[2][N];
    int V[2] = {X, Y};
    vector<int> x2y;
    for (int t: {0, 1}) {
        D[t][V[t]] = 0;
        vector<int> P;
        function<void(int)> dfs = [&](int i, int p) {
            P.push_back(i);
            if (t == 0 && i == Y) {
                x2y = P;
            }
            for (auto j: adj[i]) {
                if (j.first == p) {
                    continue;
                }
                D[t][j.first] = D[t][i] + j.second;
                dfs(j.first, i);
            }
            P.pop_back();
        };
        dfs(V[t], -1);
    }
    int m = 0;
    while (m + 1 < x2y.size() && d[0][x2y[m + 1]] <= d[1][x2y[m + 1]]) {
        m++;
    }
    int ret = 0;
    ll S[2][x2y.size()];
    ll s = 0;
    for (int i = 0; i <= m; i++) {
        s += D[0][x2y[i]];
        s = min(s, K + 1);
        S[0][i] = s;
    }
    s = 0;
    for (int j = x2y.size() - 1; j > m; j--) {
        s += D[1][x2y[j]];
        s = min(s, K + 1);
        S[1][j] = s;
    }
    for (int i = 0; i <= m; i++) {
        for (int j = x2y.size() - 1; j > m; j--) {
            if (S[0][i] + S[1][j] <= K) {
                ret = max(ret, i + 1 + (int(x2y.size()) - j));
            }
        }
    }
    if (S[0][m] + S[1][m + 1] <= K) {
        ll X[2][x2y.size()];
        ll s = 0;
        X[0][m + 1] = 0;
        for (int i = m; i >= 0; i--) {
            s += D[1][x2y[i]] - D[0][x2y[i]];
            s = min(s, K + 1);
            X[0][i] = s;
        }
        s = 0;
        X[1][m] = 0;
        for (int j = m + 1; j < x2y.size(); j++) {
            s += D[0][x2y[j]] - D[1][x2y[j]];
            s = min(s, K + 1);
            X[1][j] = s;
        }
        for (int i = 0; i <= m + 1; i++) {
            for (int j = x2y.size() - 1; j >= m; j--) {
                if (S[0][m] + S[1][m + 1] + X[0][i] + X[1][j] <= K) {
                    ret = max(ret, x2y.size() + (m + 1 - i) + (j - m));
                }
            }
        }
    }
    return ret;
}

Compilation message

closing.cpp:6:10: error: expected nested-name-specifier before 'long'
    6 | typename long long ll;
      |          ^~~~
closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:15:7: error: expected ';' before 'D'
   15 |     ll D[2][N];
      |       ^~
      |       ;
closing.cpp:15:5: warning: statement has no effect [-Wunused-value]
   15 |     ll D[2][N];
      |     ^~
closing.cpp:16:9: error: declaration of 'int V [2]' shadows a parameter
   16 |     int V[2] = {X, Y};
      |         ^
closing.cpp:9:42: note: 'std::vector<int> V' previously declared here
    9 |               vector<int> U, vector<int> V, vector<int> W) {
      |                              ~~~~~~~~~~~~^
closing.cpp:19:9: error: 'D' was not declared in this scope
   19 |         D[t][V[t]] = 0;
      |         ^
closing.cpp: In lambda function:
closing.cpp:31:31: error: no match for call to '(std::function<void(int)>) (int&, int&)'
   31 |                 dfs(j.first, i);
      |                               ^
In file included from /usr/include/c++/10/functional:59,
                 from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/10/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from closing.cpp:3:
/usr/include/c++/10/bits/std_function.h:617:5: note: candidate: '_Res std::function<_Res(_ArgTypes ...)>::operator()(_ArgTypes ...) const [with _Res = void; _ArgTypes = {int}]'
  617 |     function<_Res(_ArgTypes...)>::
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/std_function.h:617:5: note:   candidate expects 1 argument, 2 provided
closing.cpp: In function 'int max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)':
closing.cpp:34:9: error: conversion from 'max_score(int, int, int, long long int, std::vector<int>, std::vector<int>, std::vector<int>)::<lambda(int, int)>' to non-scalar type 'std::function<void(int)>' requested
   34 |         };
      |         ^
closing.cpp:35:21: error: no match for call to '(std::function<void(int)>) (int&, int)'
   35 |         dfs(V[t], -1);
      |                     ^
In file included from /usr/include/c++/10/functional:59,
                 from /usr/include/c++/10/pstl/glue_algorithm_defs.h:13,
                 from /usr/include/c++/10/algorithm:74,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from closing.cpp:3:
/usr/include/c++/10/bits/std_function.h:617:5: note: candidate: '_Res std::function<_Res(_ArgTypes ...)>::operator()(_ArgTypes ...) const [with _Res = void; _ArgTypes = {int}]'
  617 |     function<_Res(_ArgTypes...)>::
      |     ^~~~~~~~~~~~~~~~~~~~~~~~~~~~
/usr/include/c++/10/bits/std_function.h:617:5: note:   candidate expects 1 argument, 2 provided
closing.cpp:38:18: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |     while (m + 1 < x2y.size() && d[0][x2y[m + 1]] <= d[1][x2y[m + 1]]) {
      |            ~~~~~~^~~~~~~~~~~~
closing.cpp:38:34: error: 'd' was not declared in this scope
   38 |     while (m + 1 < x2y.size() && d[0][x2y[m + 1]] <= d[1][x2y[m + 1]]) {
      |                                  ^
closing.cpp:42:7: error: expected ';' before 'S'
   42 |     ll S[2][x2y.size()];
      |       ^~
      |       ;
closing.cpp:42:5: warning: statement has no effect [-Wunused-value]
   42 |     ll S[2][x2y.size()];
      |     ^~
closing.cpp:43:7: error: expected ';' before 's'
   43 |     ll s = 0;
      |       ^~
      |       ;
closing.cpp:43:5: warning: statement has no effect [-Wunused-value]
   43 |     ll s = 0;
      |     ^~
closing.cpp:45:9: error: 's' was not declared in this scope
   45 |         s += D[0][x2y[i]];
      |         ^
closing.cpp:45:14: error: 'D' was not declared in this scope
   45 |         s += D[0][x2y[i]];
      |              ^
closing.cpp:47:9: error: 'S' was not declared in this scope
   47 |         S[0][i] = s;
      |         ^
closing.cpp:49:5: error: 's' was not declared in this scope
   49 |     s = 0;
      |     ^
closing.cpp:51:14: error: 'D' was not declared in this scope
   51 |         s += D[1][x2y[j]];
      |              ^
closing.cpp:53:9: error: 'S' was not declared in this scope
   53 |         S[1][j] = s;
      |         ^
closing.cpp:57:17: error: 'S' was not declared in this scope
   57 |             if (S[0][i] + S[1][j] <= K) {
      |                 ^
closing.cpp:62:9: error: 'S' was not declared in this scope
   62 |     if (S[0][m] + S[1][m + 1] <= K) {
      |         ^
closing.cpp:63:11: error: expected ';' before 'X'
   63 |         ll X[2][x2y.size()];
      |           ^~
      |           ;
closing.cpp:63:9: warning: statement has no effect [-Wunused-value]
   63 |         ll X[2][x2y.size()];
      |         ^~
closing.cpp:64:11: error: expected ';' before 's'
   64 |         ll s = 0;
      |           ^~
      |           ;
closing.cpp:64:9: warning: statement has no effect [-Wunused-value]
   64 |         ll s = 0;
      |         ^~
closing.cpp:65:10: error: invalid types 'int[int]' for array subscript
   65 |         X[0][m + 1] = 0;
      |          ^
closing.cpp:67:18: error: 'D' was not declared in this scope
   67 |             s += D[1][x2y[i]] - D[0][x2y[i]];
      |                  ^
closing.cpp:69:14: error: invalid types 'int[int]' for array subscript
   69 |             X[0][i] = s;
      |              ^
closing.cpp:72:10: error: invalid types 'int[int]' for array subscript
   72 |         X[1][m] = 0;
      |          ^
closing.cpp:73:31: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   73 |         for (int j = m + 1; j < x2y.size(); j++) {
      |                             ~~^~~~~~~~~~~~
closing.cpp:74:18: error: 'D' was not declared in this scope
   74 |             s += D[0][x2y[j]] - D[1][x2y[j]];
      |                  ^
closing.cpp:76:14: error: invalid types 'int[int]' for array subscript
   76 |             X[1][j] = s;
      |              ^
closing.cpp:80:46: error: invalid types 'int[int]' for array subscript
   80 |                 if (S[0][m] + S[1][m + 1] + X[0][i] + X[1][j] <= K) {
      |                                              ^
closing.cpp:80:56: error: invalid types 'int[int]' for array subscript
   80 |                 if (S[0][m] + S[1][m + 1] + X[0][i] + X[1][j] <= K) {
      |                                                        ^
closing.cpp:81:70: error: no matching function for call to 'max(int&, std::vector<int>::size_type)'
   81 |                     ret = max(ret, x2y.size() + (m + 1 - i) + (j - m));
      |                                                                      ^
In file included from /usr/include/c++/10/vector:60,
                 from closing.h:1,
                 from closing.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:254:5: note: candidate: 'template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)'
  254 |     max(const _Tp& __a, const _Tp& __b)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:254:5: note:   template argument deduction/substitution failed:
closing.cpp:81:70: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'std::vector<int>::size_type' {aka 'long unsigned int'})
   81 |                     ret = max(ret, x2y.size() + (m + 1 - i) + (j - m));
      |                                                                      ^
In file included from /usr/include/c++/10/vector:60,
                 from closing.h:1,
                 from closing.cpp:1:
/usr/include/c++/10/bits/stl_algobase.h:300:5: note: candidate: 'template<class _Tp, class _Compare> constexpr const _Tp& std::max(const _Tp&, const _Tp&, _Compare)'
  300 |     max(const _Tp& __a, const _Tp& __b, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algobase.h:300:5: note:   template argument deduction/substitution failed:
closing.cpp:81:70: note:   deduced conflicting types for parameter 'const _Tp' ('int' and 'std::vector<int>::size_type' {aka 'long unsigned int'})
   81 |                     ret = max(ret, x2y.size() + (m + 1 - i) + (j - m));
      |                                                                      ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from closing.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3480:5: note: candidate: 'template<class _Tp> constexpr _Tp std::max(std::initializer_list<_Tp>)'
 3480 |     max(initializer_list<_Tp> __l)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3480:5: note:   template argument deduction/substitution failed:
closing.cpp:81:70: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   81 |                     ret = max(ret, x2y.size() + (m + 1 - i) + (j - m));
      |                                                                      ^
In file included from /usr/include/c++/10/algorithm:62,
                 from /usr/include/x86_64-linux-gnu/c++/10/bits/stdc++.h:65,
                 from closing.cpp:3:
/usr/include/c++/10/bits/stl_algo.h:3486:5: note: candidate: 'template<class _Tp, class _Compare> constexpr _Tp std::max(std::initializer_list<_Tp>, _Compare)'
 3486 |     max(initializer_list<_Tp> __l, _Compare __comp)
      |     ^~~
/usr/include/c++/10/bits/stl_algo.h:3486:5: note:   template argument deduction/substitution failed:
closing.cpp:81:70: note:   mismatched types 'std::initializer_list<_Tp>' and 'int'
   81 |                     ret = max(ret, x2y.size() + (m + 1 - i) + (j - m));
      |                                                                      ^