60pts,TLE
查看原帖
60pts,TLE
987871
hopelessness楼主2023/10/20 16:50

一个暴力写法,复杂度应该可以卡过,但TLE了

Code:
/*
	by hopelessness
*/
#include<bits/stdc++.h>

#define il inline
#define MAXN 1010
#define LL long long
#define ri register int

using namespace std;

struct Stack {
	int l,len;
	vector<int>a;
	il void clear() {
		l=len=0;
		a.clear();
	}
} s;

priority_queue<Stack>q;

int iii[MAXN];

int n,m;

template<typename T>il void read(T &x) {
	char c=getchar();
	x=0;
	int f=0;
	for(; !isdigit(c); c=getchar()) f|=(c=='-');
	for(; isdigit(c); c=getchar()) x=((x<<3)+(x<<1)+(c^48));
	x=f?-x:x;
}
template<typename T>il void write(T x) {
	if(x<0) x=-x,putchar('-');
	if(x>9) write(x/10);
	putchar(x%10^48);
}
il bool operator < (const Stack &a,const Stack &b) {
	ri l1=a.a.size()-1,l2=b.a.size()-1;
	while(l1>-1&&l2>-1) {
		if(a.a[l1]==b.a[l2]) {
			l1--,l2--;
		} else return a.a[l1] > b.a[l2];
	}
	if(l1==l2) return 1;
	else if(l2>l1) return 1;
	else return 0;
}

int main() {
	freopen("aaa.in","r",stdin);
	freopen("aaa.out","w",stdout);
	read(n);
	for(ri i=1; i<=n; i=-~i) {
		read(s.len);
		for(ri j=1; j<=s.len; j=-~j) read(iii[j]);
		for(ri j=s.len; j>=1; j--) s.a.push_back(iii[j]);
		q.push(s);
		s.clear();
	}
	while(!q.empty()) {
		Stack ikun=q.top();
		q.pop();
		write(ikun.a[ikun.a.size()-1]),putchar(' ');
		ikun.a.pop_back();
		if(!ikun.a.empty()) q.push(ikun);
	}
	return 0;
}
/*
3
1 2
1 100
1 1
-----
1 2 100
*/
/*
2
5 10 20 30 40 50
2 28 27
-----
10 20 28 27 30 40 50
*/
/*
2
3 5 1 2
3 5 1 1
-----
5 1 1 5 1 2
*/
2023/10/20 16:50
加载中...