Submission #1174918

#TimeUsernameProblemLanguageResultExecution timeMemory
1174918CodeLakVNPalembang Bridges (APIO15_bridge)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>
using namespace std;

#define task "15_bridge"
#define FOR(i, a, b) for (int i = (a); i <= (b); i++)
#define FOD(i, a, b) for (int i = (a); i >= (b); i--)
#define F first
#define S second
#define ll long long

typedef pair<int, int> ii;

template<class X, class Y>
    bool minimize(X &x, Y y) {
        if (x > y) {
            x = y;
            return true;
        }
        return false;
    }

const int N = (int)1e5 + 5;

int numBridge, numCitizen;
vector<ii> citizens;

ll sameSide = 0;

namespace sub3 {
    bool valid() {
        return (numBridge == 2 && numCitizen <= 100) || (numBridge == 1 && numCitizen <= 1000);
    }
    
    void solve() {
        ll ans = LLONG_MAX;
        int n = citizens.size();
        if (numBridge == 2) {
            FOR(a, 0, n - 1) {
                FOR(b, 0, n - 1) {
                    if (a == b) continue;
                    ll cur = 0;
                    FOR(i, 0, n - 1) {
                        cur += min(abs(citizens[i].F - citizens[a].F) + abs(citizens[i].S - citizens[a].F), abs(citizens[i].F - citizens[b].F) + abs(citizens[i].S - citizens[b].F));
                    }
                    minimize(ans, cur);
                }
            }
        }
        else {
            FOR(a, 0, n - 1) {
                ll cur = 0;
                FOR(i, 0, n - 1) {
                    cur += abs(citizens[i].F - citizens[a].F) + abs(citizens[i].S - citizens[a].F);
                }  
                minimize(ans, cur);
            }
        }

        cout << ans + sameSide + n << "\n";
    }
}

int main() {
    if (fopen(task".inp", "r")) {
        freopen(task".inp", "r", stdin);
        freopen(task".out", "w", stdout);
    }
    ios_base::sync_with_stdio(0);
    cin.tie(0); cout.tie(0);

    cin >> numBridge >> numCitizen;
    FOR(i, 1, numCitizen) {
        char a, b;
        int x, y;
        cin >> a >> x >> b >> y;
        if (a == b) sameSide += 1LL * abs(x - y);
        else citizens.push_back({x, y});
    }

    sub3::solve();

    return 0;
}

Compilation message (stderr)

bridge.cpp: In function 'int main()':
bridge.cpp:65:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   65 |         freopen(task".inp", "r", stdin);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
bridge.cpp:66:16: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   66 |         freopen(task".out", "w", stdout);
      |         ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...