제출 #584034

#제출 시각아이디문제언어결과실행 시간메모리
584034yanndev전선 연결 (IOI17_wiring)C++17
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
#define ll long long
using namespace std;

// st2 13pts at 47mn
// st1 7pts at 1h04
const int OO = 1e16;

int n, m;
ll dp[201][201];
vector<int> R {};
vector<int> B {};

ll solve(int rPos, int bPos) {
    if (rPos == n && bPos == m)
        return 0;
    if (rPos == n || bPos == m)
        return OO;
    if (dp[rPos][bPos] != -1)
        return dp[rPos][bPos];
    
    // link rPos and bPos and then extend to one of them
    ll dif = abs(R[rPos] - B[bPos]);
    return dp[rPos][bPos] = dif + min({solve(rPos + 1, bPos), solve(rPos, bPos + 1), solve(rPos + 1, bPos + 1)});
}

ll min_total_length(vector<int> r, vector<int> b) {
    R = r;
    B = b;
    n = (int)r.size();
    m = (int)b.size();
    
    if (n <= 200 && m <= 200) {
        for (int i = 0; i < n; i++)
            for (int j = 0; j < m; j++)
                dp[i][j] = -1;
        return solve(0, 0);
    }

    ll ans = 0;

    if ((int)r.size() > (int)b.size()) {
        for (int i = 0; i < (int)b.size(); i++) {
            //cout << "blue " << i << " red " << (int)r.size() - i - 1 << '\n';
            ans += b[i] - r[(int)r.size() - i - 1];
        }
        for (int j = (int)r.size() - (int)b.size() - 1; j >= 0; j--) {
            //cout << "blue " << 0 << " red " << j << '\n';
            ans += b[0] - r[j];
        }
    } else {
        for (int i = 0; i < (int)r.size(); i++)
            ans += b[(int)r.size() - i - 1] - r[i];
        for (int j = (int)r.size(); j < (int)b.size(); j++)
            ans += b[j] - r.back();
    }

    return ans;
}

signed main() {
    vector<int> r {1, 2};
    vector<int> b {3, 4, 5};
    cout << min_total_length(r, b) << '\n';
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

wiring.cpp:7:16: warning: overflow in conversion from 'double' to 'int' changes value from '1.0e+16' to '2147483647' [-Woverflow]
    7 | const int OO = 1e16;
      |                ^~~~
/usr/bin/ld: /tmp/cczR2LTW.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccB5BcVU.o:wiring.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status