Submission #1353209

#TimeUsernameProblemLanguageResultExecution timeMemory
1353209javkhlantogs새 집 (APIO18_new_home)C++20
0 / 100
767 ms81328 KiB
#include<bits/stdc++.h>
#define ll long long 
using namespace std;
int main(){
	ll n,k,q,i,j,a,b,c,d;
	cin>>n>>k>>q;
	vector<vector<ll>> s;
	multiset<ll> st,st1;
	for(i=0 ; i<n ; i++){
		cin>>a>>b>>c>>d;
		s.push_back({c,a,b,1});
		s.push_back({d+1,a,b,-1});
	}
	vector<vector<ll>> x(q,vector<ll>(3));
	for(i=0 ; i<q ; i++){
		cin>>x[i][1]>>x[i][0];
		x[i][2]=i;
	}
	sort(s.begin(),s.end());
	sort(x.begin(),x.end());
	ll ind=0;
	vector<ll> cnt(k+1,0),ans(q);
	for(i=0 ; i<k ; i++) st1.insert(0);
	for(i=0 ; i<q ; i++){
		while(ind<2*n and s[ind][0]<=x[i][0]){
			if(s[ind][3]==1){
				st1.erase(st1.find(cnt[s[ind][2]]));
				cnt[s[ind][2]]++;
				st1.insert(cnt[s[ind][2]]);
				st.insert(s[ind][1]);
			}
				else{
					st1.erase(st1.find(cnt[s[ind][2]]));
					cnt[s[ind][2]]--;
					st1.insert(cnt[s[ind][2]]);
					st.erase(st.find(s[ind][1]));
				}
			ind++;
		}
		if(*(st1.begin())==0){
			ans[x[i][2]]=-1;
			continue;
		}
		ans[x[i][2]]=max(abs(*(st.begin())-x[i][1]),abs(*(st.rbegin())-x[i][1]));
	}
	for(i=0 ; i<q ; i++) cout<<ans[i]<<"\n";
	return 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...
#Verdict Execution timeMemoryGrader output
Fetching results...