QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#884021 | #9729. Dividing Sequence | zhanghuanrui | RE | 0ms | 0kb | C++14 | 1.1kb | 2025-02-05 20:54:56 | 2025-02-05 20:54:57 |
Judging History
answer
#include <bits/stdc++.h>
#ifdef zhr_debug
void debug(const char *s,...){static va_list args;va_start(args,s);vfprintf(stderr,s,args);va_end(args);}
#else
void debug(const char* s,...){}
#endif
using namespace std;
void freopen(string file){freopen((file+".in").c_str(),"r",stdin);freopen((file+".out").c_str(),"w",stdout);}
const int inf=0x3f3f3f3f;
int n;
int a[5020];
bool ok[5020];
bool nxt[5020];
int ans[5020],len;
void solve()
{
cin>>n;
for(int i=1;i<=n;i++) scanf("%d",a[i]);
memset(ok,0,sizeof(ok));
ok[1]=true;len=0;
while(1)
{
int x=inf;
for(int i=len+1;i<=n;++i) if(ok[i]) x=min(x,a[i]);
ans[++len]=x;
if(ok[n] && a[n]==x) break;
memset(nxt,0,sizeof(nxt));
bool f=false;
for(int i=len;i<n;++i)
{
if(ok[i] && a[i]==x || f)
{
f=false;
if(i+1-len<=len && ans[i+1-len]>=a[i+1])
{
f=true;
if(ans[i+1-len]>a[i+1]) break;
}
nxt[i+1]=true;
}
}
if(f) break;
memcpy(ok,nxt,sizeof(ok));
}
printf("%d\n",len);
for(int i=1;i<=len;i++) printf("%d ",ans[i]);printf("\n");
}
signed main()
{
int t;
cin>>t;
while(t--) solve();
}
详细
Test #1:
score: 0
Runtime Error
input:
5 5 3 1 2 3 2 3 1 1 2 3 3 3 3 5 1 3 1 3 1 5 2 2 1 3 3