답안 #225123

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
225123 2020-04-19T09:41:29 Z VEGAnn Simfonija (COCI19_simfonija) C++14
44 / 110
48 ms 8428 KB
#include <bits/stdc++.h>
#define sz(x) ((ll)x.size())
#define MP make_pair
#define PB push_back
#define ft first
#define sd second
#define all(x) x.begin(),x.end()
#define pll pair<ll,ll>
using namespace std;
typedef long long ll;
const ll N = 100100;
const ll OO = 1e18;
vector<pll> lf, rt;
vector<pll> qr;
ll n, k, a[N], b[N], sum_lf, sum_rt;

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

    cin >> n >> k;

    for (ll i = 0; i < n; i++)
        cin >> a[i];

    for (ll j = 0; j < n; j++){
        cin >> b[j];

        qr.PB(MP(b[j] - a[j], j));
    }

    ll ans = OO, pref = 0;

    sort(all(qr));

    int i = 0, j = 0;
    while (j < n && qr[i].ft == qr[j].ft){
        lf.PB(MP(0, qr[i].sd));
        j++;
    }

    i = j;

    if (j == sz(qr)){
        cout << 0;
        return 0;
    }

    for (int I = j; I < n; I++){
        ll nw = -(a[qr[I].sd] + qr[0].ft) + b[qr[I].sd];
        rt.PB(qr[I]);
        sum_rt += nw;
    }

    reverse(all(rt));

    ans = min(sum_lf + sum_rt, ans);

    for (; i < n; ){
        pref += qr[i].ft - qr[i - 1].ft;

        j = i;
        while (j < n && qr[i].ft == qr[j].ft){
            rt.pop_back();
            sum_rt += a[qr[j].sd] + qr[0].ft - b[qr[j].sd];
            lf.PB(MP(-pref, qr[j].sd));
            sum_lf += -pref;
            j++;
        }

        ans = min(ans, sum_lf + sum_rt + pref * sz(lf) - pref * sz(rt));
        i = j;
    }

    cout << ans;

    return 0;
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 4 ms 384 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 46 ms 8172 KB Output is correct
2 Correct 47 ms 8172 KB Output is correct
3 Correct 46 ms 8172 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 46 ms 8168 KB Output is correct
2 Correct 46 ms 8180 KB Output is correct
3 Correct 46 ms 8176 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Correct 48 ms 8172 KB Output is correct
2 Correct 45 ms 8172 KB Output is correct
3 Correct 48 ms 8180 KB Output is correct
# 결과 실행 시간 메모리 Grader output
1 Incorrect 40 ms 8428 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 45 ms 8172 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 43 ms 8296 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 48 ms 8148 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 46 ms 8176 KB Output isn't correct
2 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Incorrect 47 ms 8076 KB Output isn't correct
2 Halted 0 ms 0 KB -