记录编号 |
203771 |
评测结果 |
AAAAAAAAAA |
题目名称 |
平凡的题面 |
最终得分 |
100 |
用户昵称 |
mikumikumi |
是否通过 |
通过 |
代码语言 |
C++ |
运行时间 |
0.333 s |
提交时间 |
2015-11-03 16:43:58 |
内存使用 |
2.98 MiB |
显示代码纯文本
#include<cstdio>
#include<algorithm>
#include<iostream>
#include<cstring>
#include<deque>
#include<set>
using namespace std;
const int SIZEN=100010;
int N,M;
int len[SIZEN];
int f[SIZEN]={0},co[SIZEN];
int ans=0;
multiset<int> G;
multiset<int>::iterator it;
class miku
{
public:
int L,R;
}P[2*SIZEN];
void read()
{
scanf("%d%d",&N,&M);
for(int i=1;i<=N;i++) scanf("%d",&len[i]);
for(int i=1;i<=M;i++) scanf("%d%d",&P[i].L,&P[i].R);
}
bool cmp(miku a,miku b)
{
if(a.L==b.L) return a.R>b.R;
return a.L<b.L;
}
void work()
{
for(int i=M+1;i<=M+N;i++) P[i].L=len[i-M],P[i].R=-1;
sort(P+1,P+N+M+1,cmp);
//for(int i=1;i<=N+M;i++) cout<<P[i].L<<" "<<P[i].R<<endl;
for(int i=1;i<=N+M;i++)
{
if(P[i].R==-1)
{
it=G.begin();
while(!G.empty()&&*it<P[i].L)
{
//cout<<P[i].L<<" "<<*it<<endl;
G.erase(G.begin());
it=G.begin();
}
if(G.empty()) continue;
//cout<<P[i].L<<" "<<*it<<endl;
ans++;
G.erase(it);
}
else G.insert(P[i].R);
}
printf("%d",ans);
}
int main()
{
freopen("bg.in","r",stdin);
freopen("bg.out","w",stdout);
read();
work();
return 0;
}