Codeforces

Codeforces #1399B Gifts Fixing

ppwag 2020. 9. 18. 17:53

문제

https://codeforces.com/problemset/problem/1399/B

걸린 시간

00 : 24 : 19

풀이

C++

#include <bits/stdc++.h>
#define INF 1e9
typedef long long ll;
using namespace std;

int n;
vector<int> a, b;

int main(){
    ios::sync_with_stdio(false);
    cin.tie(NULL);
    int tc;
    cin >> tc;
    while(tc--){
        cin >> n;
        a.resize(n); b.resize(n);
        int minA = INF, minB = INF;
        for(auto& i : a){
            cin >> i;
            if(minA > i)
                minA = i;
        }
        for(auto& i : b){
            cin >> i;
            if(minB > i)
                minB = i;
        }
        ll ans = 0;
        for(int i = 0; i < n; i++)
            ans += min(a[i]-minA, b[i]-minB) + abs((a[i]-minA)-(b[i]-minB));
        cout << ans << "\n";
    }
    return 0;
}

조건을 보면 한 상자에 들어있는 캔디와 오렌지 개수는 최대 10억이다. 각각의 최소값을 구할 때 초기값으로 987,654,321 를 사용할 수 없다.

댓글