救救孩子 TLE
查看原帖
救救孩子 TLE
516858
可能性的世界楼主2021/5/31 00:09
#include <iostream>
#include<stdio.h>
using namespace std;
struct link {
	int data;
	link* last;
	link* next;
};
int main()
{
	int a, b;
	link* head = NULL, * shift=NULL,*now=NULL;
	scanf("%d", &a);
	scanf("%d",&b);
	for (int x = 0; x < a; x++) {
		int k;
		if (x == 0) {
			head = new link;
			scanf("%d", &k);
			head->data=k;
			head->next = head->last = NULL;
			shift = head;
		}
		else {
			scanf("%d", &k);
			logo:
			if (k <= (shift->data)&&(shift->last==NULL)) {
				now = new link;
				now->next = shift;
				shift->last = now;
				now->last = NULL;
				now->data = k;
				head = shift = now;
				continue;
			}
			if ((k <= shift->data) && k>=(shift->last->data)) {
				now = new link;
				now->data = k;
				now->next = shift;
				now->last = shift->last;
				shift->last = now;
				now->last->next = now;
				shift = now;
				continue;
			}
			if (k >= (shift->data)&&(shift->next==NULL)) {
				now = new link;
				now->last = shift;
				shift->next = now;
				now->next = NULL;
				now->data = k;
				shift = now;
				continue;
			}
			if ((k >= shift->data) && k <= (shift->next->data)) {
				now = new link;
				now->data = k;
				now->last = shift;
				now->next = shift->next;
				shift->next = now;
				now->next->last = now;
				shift = now;
				continue;
			}
			if (k <= shift->data) {
				shift = shift->last;
				goto logo;
			}
			if (k >= shift->data) {
				shift = shift->next;
				goto logo;
			}
		}
	}
	shift = head;
	for (int z = 0; z < b; z++)
		shift = shift->next;
	printf("%d", shift->data);
}

刚学C++,不会分治,链表有破题办法吗?

2021/5/31 00:09
加载中...