Submission #882638

# Submission time Handle Problem Language Result Execution time Memory
882638 2023-12-03T12:32:21 Z vjudge1 Palembang Bridges (APIO15_bridge) C++17
22 / 100
115 ms 8900 KB
#include <bits/stdc++.h>

using namespace std;

#define n_l '\n'
#define dbg(...) cout << "[" << #__VA_ARGS__ << "]: "; cout << to_string(__VA_ARGS__) << endl
template <typename T, size_t N> int SIZE(const T (&t)[N]){ return N; } template<typename T> int SIZE(const T &t){ return t.size(); } string to_string(const string s, int x1=0, int x2=1e9){ return '"' + ((x1 < s.size()) ? s.substr(x1, x2-x1+1) : "") + '"'; } string to_string(const char* s) { return to_string((string) s); } string to_string(const bool b) { return (b ? "true" : "false"); } string to_string(const char c){ return string({c}); } template<size_t N> string to_string(const bitset<N> &b, int x1=0, int x2=1e9){ string t = ""; for(int __iii__ = min(x1,SIZE(b)),  __jjj__ = min(x2, SIZE(b)-1); __iii__ <= __jjj__; ++__iii__){ t += b[__iii__] + '0'; } return '"' + t + '"'; } template <typename A, typename... C> string to_string(const A (&v), int x1=0, int x2=1e9, C... coords); int l_v_l_v_l = 0, t_a_b_s = 0; template <typename A, typename B> string to_string(const pair<A, B> &p) { l_v_l_v_l++; string res = "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; l_v_l_v_l--; return res; } template <typename A, typename... C> string to_string(const A (&v), int x1, int x2, C... coords) { int rnk = rank<A>::value; string tab(t_a_b_s, ' '); string res = ""; bool first = true; if(l_v_l_v_l == 0) res += n_l; res += tab + "["; x1 = min(x1, SIZE(v)), x2 = min(x2, SIZE(v)); auto l = begin(v); advance(l, x1); auto r = l; advance(r, (x2-x1) + (x2 < SIZE(v))); for (auto e = l; e != r; e = next(e)) { if (!first) { res += ", "; } first = false; l_v_l_v_l++; if(e != l){ if(rnk > 1) { res += n_l; t_a_b_s = l_v_l_v_l; }; } else{ t_a_b_s = 0; } res += to_string(*e, coords...); l_v_l_v_l--; } res += "]"; if(l_v_l_v_l == 0) res += n_l; return res; } void dbgm(){;} template<typename Heads, typename... Tails> void dbgm(Heads H, Tails... T){ cout << to_string(H) << " | "; dbgm(T...); } 
#define dbgm(...) cout << "[" << #__VA_ARGS__ << "]: "; dbgm(__VA_ARGS__); cout << endl


#define int long long int
#define MP make_pair
#define pb push_back
#define REP(i,n) for(int (i) = 0; (i) < (n); (i)++)

void fastio() {
    ios_base::sync_with_stdio(false);
    cin.tie(NULL);
}


const double EPS = 0.00001;
const int INF = 1e17;
const int N = 1e5+5;
const int ALPH = 26;
const int LGN = 25;
const int MOD = 1e9+7;
int n,m,q,K;
struct Interval {
    int l,r;
    Interval(int left, int right) {
        l = left;
        r = right;
    }
    Interval() {
        l = 0;
        r = 0;
    }
    void print() {
        cout<<"l:"<<l<<" r:"<<r<<"\n";
    }
};
bool compByL(const Interval &x, const Interval &y) {
    if(x.l == y.l) return x.r < y.r;
    return x.l < y.l;
}
bool compByR(const Interval &x, const Interval &y) {
    if(x.r == y.r) return x.l < y.l;
    return x.r < y.r;
}
vector<Interval> lsort, rsort;
int lcost[N];
int lsuf[N];
int rpref[N];
inline void solve() {
    cin>>K>>n; 
    int ans = 0;
    for(int i = 0; i<n; i++) {
        int b,d;
        char a,c;
        cin>>a>>b>>c>>d;
        ans += abs(b - d);
        if(a != c) {
            if(b > d) swap(b,d);
            lsort.pb(Interval(b,d));
            rsort.pb(Interval(b,d));
        }
        
    }
    n = lsort.size();
    ans += n;
    if(n == 0) {
        cout<<ans<<"\n";
        return;
    }
    sort(lsort.begin(), lsort.end(), compByL);
    sort(rsort.begin(), rsort.end(), compByR);
    
    lsuf[n] = 0;
    for(int i = n - 1; i>=0; i--) {
        lsuf[i] = lsuf[i + 1] + lsort[i].l;
    }
    rpref[0] = rsort[0].r;
    for(int i = 1; i<n; i++) {
        rpref[i] = rpref[i - 1] + rsort[i].r;
    }
    vector<int> pos;
    for(auto c : lsort) {
        pos.pb(c.l);
        pos.pb(c.r);
    }
    sort(pos.begin(), pos.end());
    unique(pos.begin(), pos.end());
    int res = INF;
    for(auto p : pos) {
        // dbg(p);
        auto itr = lower_bound(rsort.begin(), rsort.end(), Interval(0, p), compByR) - rsort.begin();
        int cur = 0;
        if(itr != 0) {
            itr--;
            cur += (itr + 1) * p - rpref[itr];
        }
        // dbg(cur);
        itr = upper_bound(lsort.begin(), lsort.end(), Interval(p, INF), compByL) - lsort.begin();
        // dbg(itr);
        if(itr != n) {
            cur += lsuf[itr] - (n - itr) * p;
        }
        // dbg(cur);
        res = min(res, cur);
    }

    cout<<ans + 2ll * res<<"\n";

}
 
signed main() {
    //fastio();
    int test = 1;
    //cin>>test;
    while(test--) {
        solve();
    }
    
}

Compilation message

bridge.cpp: In function 'std::string to_string(std::string, int, int)':
bridge.cpp:7:208: warning: comparison of integer expressions of different signedness: 'int' and 'std::__cxx11::basic_string<char>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
    7 | template <typename T, size_t N> int SIZE(const T (&t)[N]){ return N; } template<typename T> int SIZE(const T &t){ return t.size(); } string to_string(const string s, int x1=0, int x2=1e9){ return '"' + ((x1 < s.size()) ? s.substr(x1, x2-x1+1) : "") + '"'; } string to_string(const char* s) { return to_string((string) s); } string to_string(const bool b) { return (b ? "true" : "false"); } string to_string(const char c){ return string({c}); } template<size_t N> string to_string(const bitset<N> &b, int x1=0, int x2=1e9){ string t = ""; for(int __iii__ = min(x1,SIZE(b)),  __jjj__ = min(x2, SIZE(b)-1); __iii__ <= __jjj__; ++__iii__){ t += b[__iii__] + '0'; } return '"' + t + '"'; } template <typename A, typename... C> string to_string(const A (&v), int x1=0, int x2=1e9, C... coords); int l_v_l_v_l = 0, t_a_b_s = 0; template <typename A, typename B> string to_string(const pair<A, B> &p) { l_v_l_v_l++; string res = "(" + to_string(p.first) + ", " + to_string(p.second) + ")"; l_v_l_v_l--; return res; } template <typename A, typename... C> string to_string(const A (&v), int x1, int x2, C... coords) { int rnk = rank<A>::value; string tab(t_a_b_s, ' '); string res = ""; bool first = true; if(l_v_l_v_l == 0) res += n_l; res += tab + "["; x1 = min(x1, SIZE(v)), x2 = min(x2, SIZE(v)); auto l = begin(v); advance(l, x1); auto r = l; advance(r, (x2-x1) + (x2 < SIZE(v))); for (auto e = l; e != r; e = next(e)) { if (!first) { res += ", "; } first = false; l_v_l_v_l++; if(e != l){ if(rnk > 1) { res += n_l; t_a_b_s = l_v_l_v_l; }; } else{ t_a_b_s = 0; } res += to_string(*e, coords...); l_v_l_v_l--; } res += "]"; if(l_v_l_v_l == 0) res += n_l; return res; } void dbgm(){;} template<typename Heads, typename... Tails> void dbgm(Heads H, Tails... T){ cout << to_string(H) << " | "; dbgm(T...); }
      |                                                                                                                                                                                                             ~~~^~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 2396 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 1 ms 2396 KB Output is correct
7 Correct 1 ms 2396 KB Output is correct
8 Correct 1 ms 2392 KB Output is correct
9 Correct 2 ms 2396 KB Output is correct
10 Correct 1 ms 2396 KB Output is correct
11 Correct 1 ms 2396 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Correct 1 ms 2392 KB Output is correct
4 Correct 1 ms 2396 KB Output is correct
5 Correct 1 ms 2396 KB Output is correct
6 Correct 1 ms 2396 KB Output is correct
7 Correct 1 ms 2392 KB Output is correct
8 Correct 1 ms 2396 KB Output is correct
9 Correct 2 ms 2396 KB Output is correct
10 Correct 1 ms 2392 KB Output is correct
11 Correct 1 ms 2396 KB Output is correct
12 Correct 54 ms 8628 KB Output is correct
13 Correct 115 ms 8644 KB Output is correct
14 Correct 81 ms 8368 KB Output is correct
15 Correct 67 ms 5892 KB Output is correct
16 Correct 72 ms 8760 KB Output is correct
17 Correct 97 ms 8644 KB Output is correct
18 Correct 93 ms 8832 KB Output is correct
19 Correct 106 ms 8616 KB Output is correct
20 Correct 86 ms 8900 KB Output is correct
21 Correct 100 ms 8652 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 0 ms 344 KB Output is correct
2 Correct 0 ms 344 KB Output is correct
3 Incorrect 0 ms 2396 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 0 ms 348 KB Output is correct
3 Incorrect 1 ms 2392 KB Output isn't correct
4 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Incorrect 1 ms 2392 KB Output isn't correct
4 Halted 0 ms 0 KB -