Submission #1328947

#TimeUsernameProblemLanguageResultExecution timeMemory
1328947boclobanchatCoin Collecting (JOI19_ho_t4)C++20
0 / 100
0 ms348 KiB
#include<bits/stdc++.h>
using namespace std;
const int MAXN=2e5+5;
const long long INF=1e18;
pair<long long,long long> A[MAXN];
vector<int> pqa,pqb;
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    cout.tie(0);
    int n;
    cin>>n;
    long long ans=0,cntx=0,cnty=0;
    for(int i=1;i<=n*2;i++)
    {
    	cin>>A[i].first>>A[i].second;
    	if(A[i].second<=1) ans+=1-A[i].second,pqa.push_back(A[i].first);
    	else ans+=A[i].second-2,pqb.push_back(A[i].first);
	}
	sort(pqa.begin(),pqa.end());
	sort(pqb.begin(),pqb.end());
	int l=pqa.size()-1,r=pqb.size()-1;
	for(int i=n;i;i--)
	{
		if(l>=0&&r>=0)
		{
			if((pqa[l]<=i)==(pqb[r]<=i)) ans+=abs(pqa[l]-i)+abs(pqb[r]-i),pqa.pop_back(),pqb.pop_back(),l--,r--;
			else if(pqa[l]>i) ans+=abs(pqa[l]-i)+abs(pqa[l-1]-i)+1,pqa.pop_back(),pqa.pop_back(),l-=2;
			else ans+=abs(pqb[r]-i)+abs(pqb[r-1]-i)+1,pqb.pop_back(),pqb.pop_back(),r-=2;
		}
		else if(l>=0) ans+=abs(pqa[l]-i)+abs(pqa[l-1]-i)+1,pqa.pop_back(),pqa.pop_back(),l-=2;
		else ans+=abs(pqb[r]-i)+abs(pqb[r-1]-i)+1,pqb.pop_back(),pqb.pop_back(),r-=2;
	}
    cout<<ans;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...