This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include<iostream>
#include<stdio.h>
#include<vector>
#include<queue>
#include<algorithm>
#include<set>
using namespace std;
typedef long long int lld;
int abs(int x){
if(x>0)return x;
return -x;
}
int main(){
int n,q,k;
cin>>n>>k>>q;
int stores[n][4];
for(int i=0;i<n;i++){
cin>>stores[i][0]>>stores[i][1]>>stores[i][2]>>stores[i][3];
stores[i][1]--;
}
pair<int,pair<int,int> > queries[q];
for(int i=0;i<q;i++){int x,y;
cin>>x>>y;
queries[i].second.second=i;
queries[i].second.first=x;
queries[i].first=y;
}sort(queries,queries+q);
pair<int,int> v[2*n];
for(int i=0;i<n;i++){
v[2*i]=pair<int,int>(stores[i][2],i);
v[2*i+1]=pair<int,int>(stores[i][3]+1,i);
}sort(v,v+2*n);
int pos=0;
bool used[n];
for(int i=0;i<n;i++)used[i]=false;
multiset<int> arr[k];
int ans[q];
for(int i=0;i<q;i++){
while(pos<2*n && v[pos].first<=queries[i].first){
if(used[v[pos].second]){
used[v[pos].second]=false;
int store=v[pos].second;
std::multiset<int>::iterator it=arr[stores[store][1]].find(stores[store][0]);
arr[stores[store][1]].erase(it);
}else{
used[v[pos].second]=true;
int store=v[pos].second;
arr[stores[store][1]].insert(stores[store][0]);
}
pos++;
}
int xcoord=queries[i].second.first;
int number=queries[i].second.second;
for(int j=0;j<k;j++){
std::multiset<int>::iterator it=arr[j].upper_bound(xcoord);
int R=1000000000;
if(it!=arr[j].end()){
R=min(R,abs(xcoord-*it));
}
if(it!=arr[j].begin()){
it--;
R=min(R,abs(xcoord-*it));
}
ans[number]=max(ans[number],R);
}
}
for(int i=0;i<q;i++){
if(ans[i]!=1000000000)cout<<ans[i]<<endl;
else cout<<-1<<endl;
}
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |