题解:【ARC183 A】Median of Good Sequences
JXR_Kalcium · · 题解
题目大意
给定一个
解题思路
首先肯定不能直接暴力枚举所有的 “好串”,于是这一题肯定是道数学/找规律题。我们可以先通过一遍全排列得出一个表(斜杠代表我没表):
显然,
当
AC 代码
#include <bits/stdc++.h>
#define ll long long
#define endl putchar(10)
#define spc putchar(32)
#define R register
using namespace std;
#ifndef ONLINE_JUDGE
#define debug(x) cerr << #x << " = " << x, endl
#endif
inline ll read()
{
ll x=0,f=1; char c=getchar();
while(c<48 || c>57)
{
if(c=='-') f=-1;
c=getchar();
}
while(c>47 && c<58)
x=(x<<1)+(x<<3)+c-48, c=getchar();
return x*f;
}
inline void write(ll x)
{
static ll sta[41]; ll top=0;
if(x<0) putchar('-'), x=-x;
do sta[top++]=x%10, x/=10; while(x);
while(top) putchar(sta[--top]+48);
}
ll n,k,cnt;
int main()
{
n=read(); k=read();
if(n<2)
{
for(R int i=1; i<=k; ++i)
write(1), spc; exit(0);
}
if(n&1)
{
for(R int i=1; i<=k; ++i)
write(n+1>>1), spc; write(n>>1); spc;
for(R int i=n; i; --i)
{
if(i!=n>>1 && i!=n+1>>1)
{
for(R int j=1; j<=k; ++j)
write(i), spc;
}
if(++cnt==n>>1)
{
for(R int j=1; j<k; ++j)
write(n>>1), spc;
}
}
}
else
{
write(n>>1); spc;
for(R int i=n; i; --i)
{
if(i!=n>>1)
{
for(R int j=1; j<=k; ++j)
write(i), spc;
}
if(cnt++==n>>1)
{
for(R int j=1; j<k; ++j)
write(n>>1), spc;
}
}
}
return 0;
}