Submission #1208510

#TimeUsernameProblemLanguageResultExecution timeMemory
1208510MuhammadSaramInspections (NOI23_inspections)C++20
100 / 100
948 ms49172 KiB
#include <bits/stdc++.h>

using namespace std;

#define ll long long
#define f first
#define s second

const int M = 6e5;

pair<pair<int,int>,ll> v[M],a;

signed main()
{
	ios::sync_with_stdio(0);
	cin.tie(NULL),cout.tie(NULL);
	
	int n,m,q;
	cin>>n>>m>>q;
	set<pair<pair<int,int>,ll>> se;
	map<ll,ll> suf;
	set<ll,greater<ll>> se1;
	ll t=0;
	for (int i=0;i<m;i++)
	{
		int l,r;
		cin>>l>>r;
		auto it=se.upper_bound({{l,0},0});
		int id=0;
		if (it!=se.begin())
		{
			it--;
			v[id++]=*it;
			it++;
		}
		while (it!=se.end() && (*it).f.f<=r)
			v[id++]=*it,it++;
		for (int j=0;j<id;j++)
		{
			a=v[j];
			int mn=max(a.f.f,l),mx=min(a.f.s,r);
			if (mn>mx) continue;
			ll dif=t+mn-l-(mn-a.f.f+a.s);
			suf[dif]+=mx-mn+1,se1.insert(dif);
			if (mn==a.f.f && mx==a.f.s)
				se.erase(a);
		}
		if (id)
		{
			a=v[0];
			if (a.f.f<l && a.f.s>=l)
				se.erase(a),se.insert({{a.f.f,l-1},a.s});
			a=v[id-1];
			if (a.f.s>r && a.f.f<=r)
				se.erase(a),se.insert({{r+1,a.f.s},a.s+r+1-a.f.f});
		}
		se.insert({{l,r},t});
		t+=r-l+1;
	}
	ll su=0,id=0;
	vector<pair<ll,ll>> ans(suf.size());
	for (ll i:se1)
		su+=suf[i],ans[id++]={i,su};
	sort(ans.begin(),ans.end());
	while (q--)
	{
		ll x;
		cin>>x;
		x=lower_bound(ans.begin(),ans.end(),make_pair(x+1,0ll))-begin(ans);
		if (x!=ans.size())
			cout<<ans[x].second<<' ';
		else	
			cout<<0<<' ';
	}
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...