Submission #335916

#TimeUsernameProblemLanguageResultExecution timeMemory
335916VodkaInTheJar운세 보기 2 (JOI14_fortune_telling2)C++14
4 / 100
3093 ms1772 KiB
#include <bits/stdc++.h>
#pragma GCC optimize("O3")
#define endl '\n'

using namespace std;

const int maxn = 2e5 + 3;

int n, k;
int a[maxn], b[maxn];
int t[maxn];
void read()
{
	cin >> n >> k;
	for (int i = 1; i <= n; i++)
	cin >> a[i] >> b[i];
	
	for (int i = 1; i <= k; i++)
	cin >> t[i];
}

int tr[maxn * 4];

void merge(int v)
{
	tr[v] = max(tr[v * 2], tr[v * 2 + 1]);
}

void build(int v, int l, int r)
{
	if (l == r)
	{
		tr[v] = t[l];
		return;
	}
	
	int mid = (l + r) / 2;
	build(v * 2, l, mid);
	build(v * 2 + 1, mid + 1, r);
	
	merge(v); 
}

int first, second;
void f(int v, int l, int r)
{
 	if (tr[v] < first)
	return;
	
	if (l == r)
	{
		swap(first, second);
		return;
	}
	
	int mid = (l + r) / 2; 
	f(v * 2, l, mid);
	f(v * 2 + 1, mid + 1, r);
}

void solve()
{
	build(1, 1, k);
	
	long long ans = 0;
	for (int i = 1; i <= n; i++)
	{
		first = a[i], second = b[i];
		f(1, 1, k);
		
		ans += first;
	}
	
	cout << ans << endl; 
}

int main()
{
	ios_base::sync_with_stdio(false);
	cin.tie(nullptr);
	cout.tie(nullptr);

	read();
	solve();
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...