제출 #781662

#제출 시각아이디문제언어결과실행 시간메모리
781662vjudge1Just Long Neckties (JOI20_ho_t1)C++17
100 / 100
255 ms31072 KiB
#include<bits/stdc++.h>
using namespace std;
#define lalala ios_base::sync_with_stdio(false);cin.tie(NULL);cout.tie(NULL);
#define endl "\n"
#define ll long long
#define pb push_back
#define N 200005
map<pair<int,int>,int>mp;
int main(){
	lalala;
	int n;cin>>n;
	vector<pair<ll int,int>> arr;
	vector<ll int> mus;
	ll int cev[n+1];
	for(int i=0;i<n+1;i++){
		ll int a;cin>>a;
		arr.pb({a,i});
	}
	for(int i=0;i<n;i++){
		ll int a;cin>>a;
		mus.pb(a);
	}
	sort(arr.begin(),arr.end());sort(mus.begin(),mus.end());
	priority_queue<tuple<ll int ,int,int>> pq;
	for(int i=0;i<n;i++){
		if(mus[i]>arr[i+1].first){
			pq.push({(ll int)0,i,i+1});
		}
		else pq.push({arr[i+1].first-mus[i],i,i+1});
	}
	ll int a,b,c;
	tie(a,b,c)=pq.top();
	cev[arr[0].second]=a;
	for(int i=1;i<=n;i++){
		pq.push({max(arr[i-1].first-mus[i-1],(ll int)0),i-1,i-1});
		mp[{i-1,i}]=1;
		tie(a,b,c)=pq.top();
		while(mp[{b,c}]){
			pq.pop();
			tie(a,b,c)=pq.top();
		}
		cev[arr[i].second]=a;
	}
	for(int i=0;i<=n;i++)cout<<cev[i]<<" ";
	cout<<endl;

}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...