308 F 求调
  • 板块学术版
  • 楼主SilverLi
  • 当前回复0
  • 已保存回复0
  • 发布时间2023/7/1 22:04
  • 上次更新2023/11/3 11:56:09
查看原帖
308 F 求调
688783
SilverLi楼主2023/7/1 22:04
#include <iostream>
#include <algorithm>
#include <utility>
#include <vector>
#include <map>
using namespace std;
#define all_p p + 1, p + n + 1
#define pi pair<int, int>
#define D first
#define L second
#define d a[i].D
#define l a[i].L
const int N = 2e5 + 5;
pi a[N];
int n, m, ans;
int p[N], vis[N];
vector<int> g[N];
signed main() {
	cin >> n >> m;
	for (int i = 1; i <= n; ++i)	cin >> p[i];
	for (int i = 1; i <= m; ++i)	cin >> l;
	for (int i = 1; i <= m; ++i)	cin >> d;
	sort(all_p);
	sort(a + 1, a + m + 1);
	for (int i = m; i; --i) {
		int k1 = lower_bound(all_p, l) - p;
		int k2 = lower_bound(all_p, d) - p;
		if (k1 >= k2) {
			p[k1] -= d;
			vis[i] = 1;
		}
		else {
			g[k1].push_back(i);
			g[k2].push_back(i);
		}
	}
	for (int j = 1; j <= n; ++j)
		if (!g[j].empty())
			for (int x = 0; x < g[j].empty(); ++x) {
				int i = g[j][x];
				if (!vis[i]) {
					vis[i] = 1;
					p[j] -= d;
					break;
				}
			}
	for (int i = 1; i <= n; ++i)
		ans += p[i];
	cout << ans;
	return 0;
}
2023/7/1 22:04
加载中...