QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#785904#962. Thanks to MikeMirzayanovDaiRuiChen007WA 0ms3824kbC++171.7kb2024-11-26 19:34:222024-11-26 19:34:31

Judging History

你现在查看的是最新测评结果

  • [2024-11-26 19:34:31]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3824kb
  • [2024-11-26 19:34:22]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
typedef vector <int> vi;
const int MAXN=2e4+5;
vector<vi> qry(vi a) {
	int n=a.size();
	vector <vi> op;
	while(true) {
		vi len;
		for(int i=0,j;i<n;i=j) {
			for(j=i;j<n&&a[i]==a[j];++j);
			len.push_back(j-i);
		}
		int tp=len.size();
		if(tp==1||(tp==2&&!a[0])) break;
		vi cur;
		if(tp%3==2) {
			for(int i=0;i+2<tp;i+=3) {
				cur.push_back(len[i]+len[i+1]);
				cur.push_back(len[i+2]);
			}
			cur.push_back(len[tp-2]+len[tp-1]);
		} else {
			for(int i=0;i+2<tp;i+=3) {
				cur.push_back(len[i]);
				cur.push_back(len[i+1]+len[i+2]);
			}
			if(tp%3==1) cur.push_back(len[tp-1]);
		}
		auto it=a.begin();
		for(int i:cur) reverse(it,it+i),it+=i;
		op.push_back(cur);
	}
	return op;
}
int n,a[MAXN];
vector <vi> ans;
signed main() {
	ios::sync_with_stdio(false);
	cin>>n;
	for(int i=0;i<n;++i) cin>>a[i],--a[i];
	for(int k=14;~k;--k) {
		if(n<=(1<<k)) continue;
		vector <vi> op;
		for(int l=0,r;l<n;l=r+1) {
			r=min(n-1,l+(1<<(k+1))-1);
			vi b;
			for(int i=l;i<=r;++i) b.push_back(a[i]>>k&1);
			vector <vi> s=qry(b);
			while(op.size()<s.size()) op.push_back(vi(l,1));
			while(s.size()<op.size()) s.push_back(vi(r-l+1,1));
			for(int i=0;i<(int)op.size();++i) for(int x:s[i]) op[i].push_back(x);
		}
		for(auto &it:op) {
			int i=0;
			for(int x:it) reverse(a+i,a+i+x),i+=x;
			ans.push_back(it);
		}
	}
	if(ans.size()&1) ans.push_back(vi(n,1));
	vector <vi> nw;
	for(auto &i:ans) if(i.size()>1) nw.push_back(i);
	ans.swap(nw);
	cout<<ans.size()<<"\n";
	for(int i=0;i<(int)ans.size();++i) {
		vi &v=ans[i];
		if(i&1) reverse(v.begin(),v.end());
		cout<<v.size()<<" "; for(int x:v) cout<<x<<" "; cout<<"\n";
	}
	return 0;
}

詳細信息

Test #1:

score: 0
Wrong Answer
time: 0ms
memory: 3824kb

input:

4
3 1 2 4

output:

3
2 1 3 
3 2 1 1 
4 1 1 1 1 

result:

wrong answer the permutation is not sorted