답안 #1106631

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
1106631 2024-10-30T18:05:49 Z Canuc80k Potatoes and fertilizers (LMIO19_bulves) C++17
44 / 100
59 ms 15952 KB
#include "bits/stdc++.h"
using namespace std;
using ll = long long;
using ld = long double;
using ull = unsigned long long;

const ll N = 1e6 + 1;

ll n;
ll a[N], b[N];

namespace sub1 {
    const ll N = 1e6 + 1;
    ll f[N];

    void solve() {
        ll res = 0;
        for (int i = 1; i <= n; i ++) f[i] = f[i - 1] + (a[i] - b[i]);
        for (int i = 1; i <= n; i ++) res += abs(f[i]);
        cout << res;
    }
}

namespace sub3 {
    const ll N = 3e3 + 1;
    ll d[N];
    ll f[(ll)3e4 + 1], of[(ll)3e4 + 1];

    void solve() {
        for (int i = 1; i <= n; i ++) d[i] = d[i - 1] + a[i] - b[i];
        memset(f, 0x3f, sizeof f);
        
        of[0] = 0;
        for (int i = 1; i <= n; i ++) {
            for (int j = 0; j <= d[n]; j ++) {
                if (j != 0) f[j] = f[j - 1];
                f[j] = min(f[j], of[j] + abs(d[i] - j)); 
            }
            for (int j = 0; j <= d[n]; j ++) {
                of[j] = f[j];
                f[j] = 1e18;
            }
        }
        cout << of[d[n]];
    }
}

namespace sub5 {
    const ll N = 3e3 + 1;
    ll d[N];
    ll f[(ll)3e4 + 1], of[(ll)3e4 + 1];

    void solve() {
        for (int i = 1; i <= n; i ++) d[i] = d[i - 1] + a[i] - b[i];

        priority_queue<ll> pq; ll res = 0;
        for (int i = 1; i <= n; i ++) {
            pq.push(d[i]); ll top = pq.top();
            if (pq.top() > d[i]) {
                res += top - d[i];
                pq.pop(); pq.push(d[i]);
            }
        }
        cout << res;
    }
}

void doTest(ll testID) {
    cin >> n; ll sa = 0, sb = 0;
    for (int i = 1; i <= n; i ++) {
        cin >> a[i] >> b[i];
        sa += a[i], sb += b[i];
    }
    
    if (sa == sb) {sub1::solve(); return;}
    if (n <= 3e3 && max(sa, sb) <= 3e4) {sub3::solve(); return;}
    sub5::solve();
}

signed main() {
    ios_base::sync_with_stdio(0); cin.tie(0);

    int test = 1; 
    // cin >> test;
    for (int _ = 1; _ <= test; _ ++) doTest(_);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4432 KB Output is correct
2 Correct 1 ms 4432 KB Output is correct
3 Correct 1 ms 4684 KB Output is correct
4 Correct 5 ms 4828 KB Output is correct
5 Correct 9 ms 5200 KB Output is correct
6 Correct 27 ms 9800 KB Output is correct
7 Correct 55 ms 15836 KB Output is correct
8 Correct 44 ms 15836 KB Output is correct
9 Correct 42 ms 15944 KB Output is correct
10 Correct 33 ms 15836 KB Output is correct
11 Correct 32 ms 15952 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4432 KB Output is correct
2 Correct 1 ms 4432 KB Output is correct
3 Correct 1 ms 4684 KB Output is correct
4 Correct 5 ms 4828 KB Output is correct
5 Correct 9 ms 5200 KB Output is correct
6 Correct 27 ms 9800 KB Output is correct
7 Correct 55 ms 15836 KB Output is correct
8 Correct 44 ms 15836 KB Output is correct
9 Correct 42 ms 15944 KB Output is correct
10 Correct 33 ms 15836 KB Output is correct
11 Correct 32 ms 15952 KB Output is correct
12 Incorrect 28 ms 6600 KB Output isn't correct
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4432 KB Output is correct
2 Correct 1 ms 4432 KB Output is correct
3 Correct 1 ms 4688 KB Output is correct
4 Correct 4 ms 4688 KB Output is correct
5 Correct 12 ms 4688 KB Output is correct
6 Correct 59 ms 4688 KB Output is correct
7 Correct 1 ms 4688 KB Output is correct
8 Correct 6 ms 4856 KB Output is correct
9 Correct 6 ms 4688 KB Output is correct
10 Correct 1 ms 4688 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4432 KB Output is correct
2 Correct 1 ms 4432 KB Output is correct
3 Correct 1 ms 4684 KB Output is correct
4 Correct 1 ms 4688 KB Output is correct
5 Correct 4 ms 4688 KB Output is correct
6 Correct 12 ms 4688 KB Output is correct
7 Correct 59 ms 4688 KB Output is correct
8 Correct 1 ms 4688 KB Output is correct
9 Correct 6 ms 4856 KB Output is correct
10 Correct 6 ms 4688 KB Output is correct
11 Correct 1 ms 4688 KB Output is correct
12 Incorrect 1 ms 4432 KB Output isn't correct
13 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 1 ms 4432 KB Output is correct
2 Correct 1 ms 4432 KB Output is correct
3 Correct 1 ms 4684 KB Output is correct
4 Correct 1 ms 4688 KB Output is correct
5 Correct 4 ms 4688 KB Output is correct
6 Correct 12 ms 4688 KB Output is correct
7 Correct 59 ms 4688 KB Output is correct
8 Correct 1 ms 4688 KB Output is correct
9 Correct 6 ms 4856 KB Output is correct
10 Correct 6 ms 4688 KB Output is correct
11 Correct 5 ms 4828 KB Output is correct
12 Correct 9 ms 5200 KB Output is correct
13 Correct 27 ms 9800 KB Output is correct
14 Correct 55 ms 15836 KB Output is correct
15 Correct 44 ms 15836 KB Output is correct
16 Correct 42 ms 15944 KB Output is correct
17 Correct 33 ms 15836 KB Output is correct
18 Correct 32 ms 15952 KB Output is correct
19 Incorrect 28 ms 6600 KB Output isn't correct
20 Halted 0 ms 0 KB -