Submission #31724677


Source Code Expand

#include<bits/stdc++.h>
using namespace std;
#define ri int
typedef long long ll;
const int maxn=2e5+10;
template<class T>inline bool ckmax(T &x,const T &y){return x<y?x=y,1:0;}
template<class T>inline void clear(T *arr,int siz,int val=0){memset(arr,val,sizeof(T)*(siz+1));}
static char pbuf[1000000],*p1=pbuf,*p2=pbuf,obuf[1000000],*o=obuf;
#define getchar() p1==p2&&(p2=(p1=pbuf)+fread(pbuf,1,1000000,stdin),p1==p2)?EOF:*p1++
#define putchar(x) (o-obuf<1000000)?(*o++=(x)):(fwrite(obuf,o-obuf,1,stdout),o=obuf,*o++=(x))
inline int qr(){
	ri in=0;char ch;
	while(!isdigit(ch=getchar()));
	do in=(in<<1)+(in<<3)+(ch^48);while(isdigit(ch=getchar()));
	return in;
}
template<class T>
void qw(T out){
	if(out>9)qw(out/10);
	putchar(out%10|48);
}
struct flusher{~flusher(){fwrite(obuf,o-obuf,1,stdout);}}autoflush;
int a[maxn],ans,c[maxn],n,x;
bool vis[maxn];
inline void calc(int k,int cur,int sgn,bool t){
	if(k<1||k>n)return;
	ri len=0;
	clear(vis,n);
	a[++len]=x,vis[x]=true;
	while(1){
		k+=cur++*sgn;
		while(vis[k])k+=sgn,++cur;
		sgn*=-1;
		if(k<1||k>n)break;
		a[++len]=k,vis[k]=true;
	}
	for(ri i=1;i<=n;++i)
		if(!vis[i])
			a[++len]=i;
	clear(c,n);
	ri ret=0;
	for(ri i=2;i<=n;++i){
		ri f=0,p=abs(a[i]-a[i-1]);
		for(ri j=p-1;j;j^=j&-j)ckmax(f,c[j]);
		ckmax(ret,++f);
		for(ri j=p;j<=n;j+=j&-j)ckmax(c[j],f);
	}
	if(t&&ret==ans){for(ri i=1;i<=n;++i)qw(a[i]),putchar(32);exit(0);}
	ckmax(ans,ret);
}
int main(){
	n=qr(),x=qr();
	for(ri i:{0,1}){
		for(ri j:{-1,0,1})calc((n>>1)+j,0,1,i),calc((n>>1)+j,0,-1,i);
		calc(x,1,1,i),calc(x,1,-1,i);
	}
	return 0;
}

Submission Info

Submission Time
Task C - ABS Permutation (LIS ver.)
User RrU
Language C++ (GCC 9.2.1)
Score 500
Code Size 1623 Byte
Status AC
Exec Time 66 ms
Memory 6288 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 500 / 500
Status
AC × 2
AC × 35
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_small_01.txt, 01_small_02.txt, 01_small_03.txt, 01_small_04.txt, 01_small_05.txt, 02_random_01.txt, 02_random_02.txt, 02_random_03.txt, 02_random_04.txt, 02_random_05.txt, 03_large_01.txt, 03_large_02.txt, 03_large_03.txt, 03_large_04.txt, 03_large_05.txt, 03_large_06.txt, 03_large_07.txt, 03_large_08.txt, 03_large_09.txt, 03_large_10.txt, 03_large_11.txt, 03_large_12.txt, 03_large_13.txt, 03_large_14.txt, 03_large_15.txt, 04_corner_01.txt, 04_corner_02.txt, 04_corner_03.txt, 04_corner_04.txt, 04_corner_05.txt, 04_corner_06.txt, 04_corner_07.txt, 04_corner_08.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 14 ms 3384 KiB
00_sample_02.txt AC 2 ms 3512 KiB
01_small_01.txt AC 2 ms 3460 KiB
01_small_02.txt AC 2 ms 3524 KiB
01_small_03.txt AC 2 ms 3504 KiB
01_small_04.txt AC 2 ms 3468 KiB
01_small_05.txt AC 2 ms 3544 KiB
02_random_01.txt AC 17 ms 4084 KiB
02_random_02.txt AC 49 ms 5460 KiB
02_random_03.txt AC 42 ms 4996 KiB
02_random_04.txt AC 9 ms 3628 KiB
02_random_05.txt AC 47 ms 5984 KiB
03_large_01.txt AC 62 ms 6240 KiB
03_large_02.txt AC 56 ms 6236 KiB
03_large_03.txt AC 56 ms 6048 KiB
03_large_04.txt AC 62 ms 6188 KiB
03_large_05.txt AC 59 ms 6176 KiB
03_large_06.txt AC 66 ms 6136 KiB
03_large_07.txt AC 55 ms 6048 KiB
03_large_08.txt AC 58 ms 6100 KiB
03_large_09.txt AC 58 ms 6048 KiB
03_large_10.txt AC 55 ms 6264 KiB
03_large_11.txt AC 55 ms 6040 KiB
03_large_12.txt AC 58 ms 6052 KiB
03_large_13.txt AC 63 ms 6100 KiB
03_large_14.txt AC 54 ms 6260 KiB
03_large_15.txt AC 54 ms 6288 KiB
04_corner_01.txt AC 54 ms 6204 KiB
04_corner_02.txt AC 45 ms 5640 KiB
04_corner_03.txt AC 45 ms 5928 KiB
04_corner_04.txt AC 51 ms 5960 KiB
04_corner_05.txt AC 44 ms 5648 KiB
04_corner_06.txt AC 44 ms 5348 KiB
04_corner_07.txt AC 48 ms 5920 KiB
04_corner_08.txt AC 58 ms 6236 KiB