Submission #1169565

#TimeUsernameProblemLanguageResultExecution timeMemory
1169565lufychopExhibition (JOI19_ho_t2)C++20
0 / 100
0 ms328 KiB
#include <bits/stdc++.h>

using namespace std;

int main(void)
{
	int n,m,s,v,c;
	cin>>n>>m;
	set<int> frameset;
	vector<int> frame;
	vector<int> lnds,lnds2;
	vector<int> frameleft;
	vector<pair<int,int>> x;
	for(int i=0;i<n;i++)
	{
		cin>>s>>v;
		x.push_back({v,s});
	}
	for(int i=0;i<m;i++)
	{
		cin>>c;
		frame.push_back(c);
	}
	sort(x.begin(),x.end());
	for(int i=0;i<n;i++)
	{
		swap(x[i].first,x[i].second);
	}
	sort(frame.begin(),frame.end());
	frameleft.push_back(1);
	for(int i=1;i<m;i++)
	{
		if(frame[i]!=frame[i-1])
		{
			frameleft.push_back(1);
		}
		else
		{
			frameleft[frameleft.size()-1]++;
		}
	}
	frame.erase(unique(frame.begin(),frame.end()),frame.end());
	m=frame.size();
	for(int i=0;i<m;i++)
	{
		frameset.insert(frame[i]);
		//cout<<frame[i]<<" "<<frameleft[i]<<"\n";
	}
	for(int i=0;i<n;i++)
	{
		set<int>::iterator itr=frameset.lower_bound(x[i].first),itr2;
		int fi=lower_bound(frameleft.begin(),frameleft.end(),*itr)-frameleft.begin();
		int x2,fi2;
		if(lnds.empty()||lnds.back()<=x[i].first)
		{
			if(itr==frameset.end())
			{
				//cout<<frameset.size()<<" ";
				continue;
			}
			frameleft[fi]--;
			lnds.push_back(x[i].first);
			lnds2.push_back(fi);
			if(frameleft[fi]==0)
			{
				frameset.erase(itr);
			}
		}
		else
		{
			fi2=upper_bound(lnds.begin(),lnds.end(),x[i].first)-lnds.begin();
			frameleft[lnds2[fi2]]++;
			frameset.insert(frame[fi]);
			itr2=frameset.lower_bound(x[i].first);
			fi=lower_bound(frameleft.begin(),frameleft.end(),*itr)-frameleft.begin();
			frameleft[fi--];
			lnds[fi2]=x[i].first;
			lnds2[fi2]=fi;
			if(frameleft[fi]==0)
			{
				frameset.erase(itr2);
			}
		}
	}
	cout<<lnds.size();
	return 0;
}
/*
3 4
10 20
5 1
3 5
4
6
10
4

4 4 6 10
5 3 10

4 5 7 7 7 4 3 3 3 4 4

3 2
1 2
1 2
1 2
1
1	
*/
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...