Submission #1294443

#TimeUsernameProblemLanguageResultExecution timeMemory
1294443Jawad_Akbar_JJCoin Collecting (JOI19_ho_t4)C++20
100 / 100
138 ms2000 KiB
#include <iostream>
#include <set>

using namespace std;
#define int long long
int a[3][1<<17], Ans;

signed main(){
	int n;
	cin>>n;

	for (int i=1, x, y, X, Y;i<=n + n;i++){
		cin>>x>>y;

		Y = 1 + (y >= 2);
		X = max(1LL, min(x, n));

		a[Y][X]++;
		Ans += abs(x - X) + abs(y - Y);
	}

	for (int i=1;i<=n;i++){
		a[1][i]--;
		a[2][i]--;

		if (a[1][i] < 0 and a[2][i] > 0){
			int k = min(-a[1][i], a[2][i]);
			a[1][i] += k;
			a[2][i] -= k;
			Ans += k;
		}
		else if (a[1][i] > 0 and a[2][i] < 0){
			int k = min(a[1][i], -a[2][i]);
			a[1][i] -= k;
			a[2][i] += k;
			Ans += k;
		}

		Ans += abs(a[1][i]) + abs(a[2][i]);
		a[1][i+1] += a[1][i], a[2][i+1] += a[2][i];
	}

	cout<<Ans<<'\n';
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...