Submission #528103

#TimeUsernameProblemLanguageResultExecution timeMemory
528103CSQ31Coin Collecting (JOI19_ho_t4)C++17
100 / 100
171 ms7308 KiB
#include <bits/stdc++.h>
using namespace std;
typedef long long int ll;
ll c[200005][3];
int main()
{
	int n;
	cin>>n;
	ll ans = 0;
	for(int i=0;i<2*n;i++){
		int x,y;
		cin>>x>>y;
		if(x<1){
			ans+=1-x;
			x = 1;
		}else if(x>n){
			ans+=x-n;
			x = n;
		}
		if(y<1){
			ans+=1-y;
			y = 1;
		}else if(y>2){
			ans+=y-2;
			y = 2;
		}
		c[x][y]++;
	}
	for(int i=1;i<=n;i++){
		c[i][1]--;c[i][2]--;
		if(c[i][1] > 0 && c[i][2] < 0){
			int tmp = min(c[i][1],-c[i][2]);
			ans+=tmp;
			c[i][1]-=tmp;
			c[i][2]+=tmp;
		}else if(c[i][1] < 0 && c[i][2] > 0){
			int tmp = min(-c[i][1],c[i][2]);
			ans+=tmp;
			c[i][1]+=tmp;
			c[i][2]-=tmp;
		}
		ans+=abs(c[i][1]);
		ans+=abs(c[i][2]);
		c[i+1][1]+=c[i][1];
		c[i+1][2]+=c[i][2];
	}
	cout<<ans<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...