Submission #1281321

#TimeUsernameProblemLanguageResultExecution timeMemory
1281321hanguyendanghuyMatryoshka (JOI16_matryoshka)C++20
100 / 100
133 ms14192 KiB
#include <bits/stdc++.h>
using namespace std;
#define ll long long
#define pb push_back
#define fi first
#define se second
const ll MAXN=2e5+5,INF=1e18,MOD=1e9+7;
ll n,m,i,j,k,p,ans[MAXN],cnt;
ll dp[MAXN];
struct h{
	ll a,b,id;
} a[MAXN],query[MAXN];
bool cmp(h x,h y){
	if(x.b==y.b) return x.a>y.a;
	return x.b<y.b;
}
int main(){
	ios::sync_with_stdio(0);
	cin.tie(0);cout.tie(0);
	cin>>n>>m;
	for(i=1;i<=n;i++)
		cin>>a[i].a>>a[i].b;
	for(i=1;i<=m;i++)
		cin>>query[i].a>>query[i].b,query[i].id=i;
	sort(a+1,a+n+1,cmp);
	sort(query+1,query+m+1,cmp);
	ll cur=1,l=1;
	for(i=1;i<=m;i++){
		while(cur<=n&&a[cur].b<=query[i].b){
			ll p=upper_bound(dp+1,dp+l,-a[cur].a)-dp;
			dp[p]=-a[cur].a;
			if(p==l) l++;
			cur++;
		}
		ans[query[i].id]=upper_bound(dp+1,dp+l,-query[i].a)-dp-1;
	}
	for(i=1;i<=m;i++) cout<<ans[i]<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...