답안 #977954

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
977954 2024-05-08T14:31:29 Z qwerasdfzxcl Coin Collecting (JOI19_ho_t4) C++17
0 / 100
1 ms 1012 KB
#include <bits/stdc++.h>

using namespace std;
typedef long long ll;

int a[100100][2];

int main(){
	int n;
	scanf("%d", &n);

	ll ans = 0;

	for (int i=1;i<=n*2;i++){
		int x, y, nx, ny;
		scanf("%d %d", &x, &y);
		
		if (y <= 1) ny = 1;
		else ny = 2;

		if (x <= 1) nx = 1;
		else if (x <= n) nx = x;
		else nx = n;

		ans += abs(nx-x) + abs(ny-y);
		a[nx][ny-1]++;
	}

	for (int i=1,j0=1,j1=1;i<=n;i++){
		while(j0 <= n && a[j0][0]==0) j0++;
		while(j1 <= n && a[j1][1]==0) j1++;

		if (j0 <= i && j1 <= i){
			a[j0][0]--; assert(a[j0][0] >= 0);
			a[j1][1]--; assert(a[j1][1] >= 0);
			ans += abs(j0-i) + abs(j1-i);
		}

		else if (j0 <= i){
			a[j0][0]--; assert(a[j0][0] >= 0);
			ans += abs(j0-i);

			while(j0 <= n && a[j0][0]==0) j0++;
			if (j0 <= i || a[j1][1]==0){
				a[j0][0]--; assert(a[j0][0] >= 0);
				ans += abs(j0-i) + 1;
			}
			else{
				a[j1][1]--; assert(a[j1][1] >= 0);
				ans += abs(j1-i);
			}
		}

		else if (j1 <= i){
			a[j1][1]--; assert(a[j1][1] >= 0);
			ans += abs(j1-i);

			while(j1 <= n && a[j1][1]==0) j1++;
			if (j1 <= i || a[j0][0]==0){
				a[j1][1]--; assert(a[j1][1] >= 0);
				ans += abs(j1-i) + 1;
			}
			else{
				a[j0][0]--; assert(a[j0][0] >= 0);
				ans += abs(j0-i);
			}
		}

		else if (j0 <= n && j1 <= n){
			a[j0][0]--; assert(a[j0][0] >= 0);
			a[j1][1]--; assert(a[j1][1] >= 0);
			ans += abs(j0-i) + abs(j1-i);
		}

		else if (j0 <= n){
			a[j0][0]--; assert(a[j0][0] >= 0);
			ans += abs(j0-i);

			while(j0 <= n && a[j0][0]==0) j0++;
			a[j0][0]--; assert(a[j0][0] >= 0);
			ans += abs(j0-i) + 1;
		}

		else{
			a[j1][1]--; assert(a[j1][1] >= 0);
			ans += abs(j1-i);

			while(j1 <= n && a[j1][1]==0) j1++;
			a[j1][1]--; assert(a[j1][1] >= 0);
			ans += abs(j1-i) + 1;
		}
	}

	printf("%lld\n", ans);
}

Compilation message

joi2019_ho_t4.cpp: In function 'int main()':
joi2019_ho_t4.cpp:10:7: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   10 |  scanf("%d", &n);
      |  ~~~~~^~~~~~~~~~
joi2019_ho_t4.cpp:16:8: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |   scanf("%d %d", &x, &y);
      |   ~~~~~^~~~~~~~~~~~~~~~~
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 1012 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 344 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Incorrect 1 ms 344 KB Output isn't correct
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 1012 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 344 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Incorrect 1 ms 344 KB Output isn't correct
24 Halted 0 ms 0 KB -
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 348 KB Output is correct
2 Correct 1 ms 348 KB Output is correct
3 Correct 1 ms 348 KB Output is correct
4 Correct 0 ms 348 KB Output is correct
5 Correct 0 ms 348 KB Output is correct
6 Correct 0 ms 348 KB Output is correct
7 Correct 1 ms 348 KB Output is correct
8 Correct 0 ms 348 KB Output is correct
9 Correct 0 ms 344 KB Output is correct
10 Correct 1 ms 1012 KB Output is correct
11 Correct 0 ms 348 KB Output is correct
12 Correct 0 ms 348 KB Output is correct
13 Correct 0 ms 348 KB Output is correct
14 Correct 0 ms 348 KB Output is correct
15 Correct 0 ms 344 KB Output is correct
16 Correct 0 ms 348 KB Output is correct
17 Correct 0 ms 348 KB Output is correct
18 Correct 0 ms 344 KB Output is correct
19 Correct 0 ms 344 KB Output is correct
20 Correct 0 ms 348 KB Output is correct
21 Correct 0 ms 348 KB Output is correct
22 Correct 0 ms 348 KB Output is correct
23 Incorrect 1 ms 344 KB Output isn't correct
24 Halted 0 ms 0 KB -