Skip to content

Commit 477743e

Browse files
committed
Update 1029. Median (25).cpp
1 parent 704b158 commit 477743e

File tree

1 file changed

+17
-24
lines changed

1 file changed

+17
-24
lines changed
Lines changed: 17 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -1,28 +1,21 @@
11
#include <iostream>
2-
using namespace std;
3-
int k[200005];
4-
int main(){
5-
int n, m, temp, count = 0;
6-
cin >> n;
7-
for (int i = 1; i <= n; i++)
8-
scanf("%d", &k[i]);
9-
k[n + 1] = 0x7fffffff;
10-
cin >> m;
11-
int midpos = (n + m + 1) / 2, i = 1;
12-
for (int j = 1; j <= m; j++) {
13-
scanf("%d", &temp);
14-
while (k[i] < temp) {
15-
count++;
16-
if (count == midpos) cout << k[i];
17-
i++;
18-
}
19-
count++;
20-
if (count == midpos) cout << temp;
21-
}
22-
while (i <= n) {
23-
count++;
24-
if (count == midpos) cout << k[i];
25-
i++;
2+
const int maxn = 200005;
3+
int n, m, a1[maxn], a2[maxn], cnt = 0, i, j, ans;
4+
int main() {
5+
scanf("%d", &n);
6+
for(i = 1; i <= n; i++) scanf("%d", &a1[i]);
7+
scanf("%d", &m);
8+
for(i = 1; i <= m; i++) scanf("%d", &a2[i]);
9+
int target = (n + m + 1) / 2;
10+
i = 1, j = 1;
11+
while(i <= n && j <= m) {
12+
ans = a1[i] <= a2[j] ? a1[i++] : a2[j++];
13+
if(++cnt == target) break;
2614
}
15+
if(i <= n && cnt < target)
16+
ans = a1[i + target - cnt - 1];
17+
else if(j <= m && cnt < target)
18+
ans = a2[j + target - cnt - 1];
19+
printf("%d", ans);
2720
return 0;
2821
}

0 commit comments

Comments
 (0)