没用二分,只有60分 一个TLE,3个WA,不知道为什么WA
查看原帖
没用二分,只有60分 一个TLE,3个WA,不知道为什么WA
967480
jiunichenyin楼主2025/2/3 15:46
#include <iostream>
#include<vector>
#include<cstring>
#include<algorithm>
#include<string>
#include<math.h>
using namespace std;
int jiang1[100005], jiang2[100005],yanh[100005],yuan[10005];
void paixu(int arr[], int n) {
	int gap = n;
	while (gap > 1) {
		gap = gap / 2;
		for (int i = 0; i < n - gap; ++i) {
			int end = i;
			int tem = arr[end + gap];
			while (end >= 0) {
				if (tem < arr[end]) {
					arr[end + gap] = arr[end];
					end -= gap;
				}
				else {
					break;
				}
			}
			arr[end+gap] = tem;
		}
	}
}

int main() {
	int person1, person2;
	cin >> person1 >> person2;
	if (person1 == 0 || person2 == 0) {
		return 0;
	}
	for (int i = 0; i < person1; ++i) {
		cin >> jiang1[i];
		yuan[i] = jiang1[i];
	}
	for (int i = 0; i < person2; ++i) {
		cin >> jiang2[i];
	}
	paixu(jiang1,person1);
	paixu(jiang2, person2);
	int zhizhen1 = 0, zhizhen2 = 0,zhizhen3=0;
	while (1) {
		if (jiang1[zhizhen1] == jiang2[zhizhen2]) {
			yanh[zhizhen3++] = jiang1[zhizhen1];
			zhizhen1++;
			zhizhen2++;
		}
		else if(jiang1[zhizhen1] > jiang2[zhizhen2]){
			zhizhen2++;
		}
		else {
			zhizhen1++;
		}
		if (zhizhen1 == person1|| zhizhen2 == person2) {
			break;
		}
	}
	for (int j = 0; j < person1; ++j) {
		for (int i = 0; i < zhizhen3; ++i) {
			if (yanh[i] == yuan[j]) {
				cout << yanh[i] << " ";
				break;
			}
		}
	}
}
2025/2/3 15:46
加载中...