Stay Hungry,Stay Foolish!

D - Souvenirs

D - Souvenirs

https://atcoder.jp/contests/abc358/tasks/abc358_d

 

思路

贪心算法。

把a数组和b数组从小到大排序。

遍历b数组的每一个元素bi, 在a数组中找到第一个大于等于bi元素,累加值。

 

Code

https://atcoder.jp/contests/abc358/submissions/54656383

#define int long long

int n, m;
vector<int> a, b;

signed main()
{
    cin >> n >> m;
    
    a.resize(n);
    b.resize(m);

    for(int i=0; i<n; i++){
        cin >> a[i];
    }

    for(int i=0; i<m; i++){
        cin >> b[i];
    }

    // candidates
    sort(a.begin(), a.end());
    
    // customers
    sort(b.begin(), b.end());

    int ans = 0;
    int a_start = 0;
    for(int i=0; i<m; i++){
        int a_target = lower_bound(a.begin()+a_start, a.end(), b[i]) - a.begin();
        
        if (a_target == n){
            cout << -1 << endl;
            return 0;
        }
        
        ans += a[a_target];
        
        a_start = a_target + 1;
    }

    cout << ans << endl;

    return 0;
}

 

posted @ 2024-06-17 13:27  lightsong  阅读(2)  评论(0编辑  收藏  举报
Life Is Short, We Need Ship To Travel