Submission #1353319

#TimeUsernameProblemLanguageResultExecution timeMemory
1353319khangai11New Home (APIO18_new_home)C++20
0 / 100
5096 ms62880 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
void solve(){
	ll n,k,q;
	cin>>n>>k>>q;
	vector<ll> x(n),t(n),l(n),r(n);
	vector<int> T;
	for(ll a=0;a<n;a++){
		cin>>x[a]>>t[a]>>l[a]>>r[a];
		T.push_back(l[a]);
		T.push_back(r[a]);
	}
	vector<ll> z(q),y(q);
	vector<pair<pair<int,int>,int>> Q(q);
	for(ll a=0;a<q;a++){
		cin>>z[a]>>y[a];
		Q[a]={{y[a],z[a]},a};
	}
	sort(T.begin(),T.end());
	sort(Q.begin(),Q.end());
	vector<vector<pair<int,pair<int,int>>>> A(T.size());
	for(int a=0;a<n;a++){
		int i=lower_bound(T.begin(),T.end(),l[a])-T.begin();
		A[i].push_back({1,{x[a],t[a]-1}});
		i=lower_bound(T.begin(),T.end(),r[a])-T.begin();
		A[i].push_back({2,{x[a],t[a]-1}});
	}
	vector<multiset<int>> c(k);
	vector<int> ans(q);
	ll time=0;
	for(int a=0;a<q;a++){
		if(time!=T.size())
		while(T[time]<Q[a].first.first){
			for(auto z:A[time]){
				if(z.first==1){
					c[z.second.second].insert(z.second.first);
				}else{
					c[z.second.second].erase(lower_bound(c[z.second.second].begin(),c[z.second.second].end(),z.second.first));
				}
			}
			time++;
			if(time==T.size()){
				break;
			}
		}
		if(T[time]==Q[a].first.first){
			for(auto z:A[time]){
				if(z.first==1){
					c[z.second.second].insert(z.second.first);
				}
			}
		}
		ll D=0;
		for(int b=0;b<k;b++){
			if(c[b].size()==0){
				D=-1;
				break;
			}else{
				auto i=upper_bound(c[b].begin(),c[b].end(),Q[a].first.second);
				if(i==c[b].end()){
					i--;
					D=max(D,abs(Q[a].first.second-(ll)(*i)));
				}else if(i==c[b].begin()){
					D=max(D,abs(Q[a].first.second-(ll)(*i)));
				}else{
					ll a1=abs(Q[a].first.second-(ll)(*i));
					i--;
					D=max(D,min(a1,abs(Q[a].first.second-(ll)(*i))));
				}
			}
		}
		ans[Q[a].second]=D;
		if(T[time]==Q[a].first.first){
			for(auto z:A[time]){
				if(z.first==2){
					c[z.second.second].erase(lower_bound(c[z.second.second].begin(),c[z.second.second].end(),z.second.first));
				}
			}
		}
	}
	for(int a=0;a<q;a++){
		cout<<ans[a]<<endl;
	}
}
signed main(){
	ios::sync_with_stdio();
	cin.tie(0);
	cout.tie(0);
	ll t=1;
//	cin>>t;
	for(ll a=0;a<t;a++){
		solve();
	}
}

Compilation message (stderr)

new_home.cpp: In function 'void solve()':
new_home.cpp:18:35: warning: narrowing conversion of 'a' from 'long long int' to 'int' [-Wnarrowing]
   18 |                 Q[a]={{y[a],z[a]},a};
      |                                   ^
#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...