提出 #48269603


ソースコード 拡げる

// LUOGU_RID: 138682831
#include<bits/stdc++.h>
using namespace std;

typedef long long ll;
typedef unsigned long long ull;
typedef double db;
typedef long double ldb;

#define rep(i,l,r) for(int i(l);i<=(r);++i)
#define per(i,r,l) for(int i(r);i>=(l);--i)
#define eb emplace_back
#define File(filename) freopen(filename ".in","r",stdin),freopen(filename ".out","w",stdout)

#ifdef EXODUS
	#define Debug(...) fprintf(stderr,__VA_ARGS__)
#else
	#define Debug(...) 0
#endif

//=========================================================================================================
// Something about IO

template<typename T>
void read(T &x){
	x=0;T flg=1;
	char ch=getchar();
	while(!isdigit(ch)){if(ch=='-')flg=-1;ch=getchar();}
	while(isdigit(ch))x=(x<<3)+(x<<1)+(ch^48),ch=getchar();
	x*=flg;
}
template<typename T,typename... Args>
void read(T &x,Args &...args){read(x),read(args...);}

//=========================================================================================================
// Define the global variables here.

bool membg=0;

bool memed=0;

//=========================================================================================================
// Code here.

constexpr int N=57;

int n,a[N];
vector<vector<int>>ans;

void print(vector<int>&p){
	vector<int>cur(n);int val=0;
	for(auto x:p)cur[x-1]=++val,a[x]+=val;
	ans.eb(cur);
}

void solve(){
	read(n);
	for(int i=1;i<=n;i++)read(a[i]);
	auto solve=[&](){
		for(;;){
			int x=max_element(a+1,a+n+1)-a,y=min_element(a+1,a+n+1)-a;
			if(a[x]==a[y])break;
			vector<int>p;p.eb(x),p.eb(y);
			for(int i=1;i<=n;i++)
				if(i!=x&&i!=y)p.eb(i);
			print(p);
			reverse(p.begin(),p.end());
			p.pop_back();p.pop_back();
			p.eb(x),p.eb(y);
			print(p);
		}
	};
	if(n&1){
		if(accumulate(a+1,a+n+1,0)%n!=0){
			printf("No\n");
		}else{
			solve();
			printf("Yes\n");
			printf("%d\n",(int)ans.size());
			for(auto &perm:ans){
				for(auto q:perm)printf("%d ",q);
				printf("\n");
			}
		}
	}else{
		auto all=accumulate(a+1,a+n+1,0);
		if(all%n==0){
			solve();
			printf("Yes\n");
			printf("%d\n",(int)ans.size());
			for(auto &perm:ans){
				for(auto q:perm)printf("%d ",q);
				printf("\n");
			}
		}else if(all%n==n/2){
			vector<int>p(n);
			iota(p.begin(),p.end(),1);
			print(p);
			solve();
			printf("Yes\n");
			printf("%d\n",(int)ans.size());
			for(auto &perm:ans){
				for(auto q:perm)printf("%d ",q);
				printf("\n");
			}
		}else{
			printf("No\n");
		}
	}
	return;
}


//=========================================================================================================

int main(){
	Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
	int timbg=clock();
	int T=1;
	while(T--)solve();
	int timed=clock();
	Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
	fflush(stdout);
	return 0;
}

提出情報

提出日時
問題 C - Permutation Addition
ユーザ EXODUS
言語 C++ 17 (gcc 12.2)
得点 500
コード長 2913 Byte
結果 AC
実行時間 4 ms
メモリ 4160 KiB

コンパイルエラー

Main.cpp: In function ‘int main()’:
Main.cpp:18:28: warning: statement has no effect [-Wunused-value]
   18 |         #define Debug(...) 0
      |                            ^
Main.cpp:117:9: note: in expansion of macro ‘Debug’
  117 |         Debug("%.3lfMB\n",fabs(&memed-&membg)/1024.0/1024.0);
      |         ^~~~~
Main.cpp:18:28: warning: statement has no effect [-Wunused-value]
   18 |         #define Debug(...) 0
      |                            ^
Main.cpp:122:9: note: in expansion of macro ‘Debug’
  122 |         Debug("%.3lfs\n",1.0*(timed-timbg)/CLOCKS_PER_SEC);
      |         ^~~~~
Main.cpp:118:13: warning: unused variable ‘timbg’ [-Wunused-variable]
  118 |         int timbg=clock();
      |             ^~~~~
Main.cpp:121:13: warning: unused variable ‘timed’ [-Wunused-variable]
  121 |         int timed=clock();
      |             ^~~~~

ジャッジ結果

セット名 Sample All
得点 / 配点 0 / 0 500 / 500
結果
AC × 3
AC × 44
セット名 テストケース
Sample 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt
All 00_sample_00.txt, 00_sample_01.txt, 00_sample_02.txt, 01_rnd_00.txt, 01_rnd_01.txt, 01_rnd_02.txt, 01_rnd_03.txt, 01_rnd_04.txt, 01_rnd_05.txt, 02_min_00.txt, 02_min_01.txt, 02_min_02.txt, 02_min_03.txt, 02_min_04.txt, 02_min_05.txt, 02_min_06.txt, 02_min_07.txt, 02_min_08.txt, 02_min_09.txt, 02_min_10.txt, 02_min_11.txt, 02_min_12.txt, 02_min_13.txt, 02_min_14.txt, 03_max_00.txt, 03_max_01.txt, 03_max_02.txt, 03_max_03.txt, 03_max_04.txt, 03_max_05.txt, 03_max_06.txt, 03_max_07.txt, 03_max_08.txt, 03_max_09.txt, 03_max_10.txt, 03_max_11.txt, 03_max_12.txt, 03_max_13.txt, 03_max_14.txt, 04_same_00.txt, 04_same_01.txt, 04_same_02.txt, 04_same_03.txt, 04_same_04.txt
ケース名 結果 実行時間 メモリ
00_sample_00.txt AC 1 ms 3744 KiB
00_sample_01.txt AC 1 ms 3528 KiB
00_sample_02.txt AC 1 ms 3812 KiB
01_rnd_00.txt AC 1 ms 3596 KiB
01_rnd_01.txt AC 1 ms 3528 KiB
01_rnd_02.txt AC 1 ms 3716 KiB
01_rnd_03.txt AC 1 ms 3576 KiB
01_rnd_04.txt AC 1 ms 3560 KiB
01_rnd_05.txt AC 1 ms 3552 KiB
02_min_00.txt AC 1 ms 3852 KiB
02_min_01.txt AC 1 ms 3644 KiB
02_min_02.txt AC 1 ms 3708 KiB
02_min_03.txt AC 1 ms 3712 KiB
02_min_04.txt AC 1 ms 3596 KiB
02_min_05.txt AC 1 ms 3588 KiB
02_min_06.txt AC 1 ms 3652 KiB
02_min_07.txt AC 1 ms 3648 KiB
02_min_08.txt AC 1 ms 3424 KiB
02_min_09.txt AC 1 ms 3828 KiB
02_min_10.txt AC 1 ms 3568 KiB
02_min_11.txt AC 1 ms 3520 KiB
02_min_12.txt AC 1 ms 3588 KiB
02_min_13.txt AC 1 ms 3716 KiB
02_min_14.txt AC 1 ms 3596 KiB
03_max_00.txt AC 4 ms 4160 KiB
03_max_01.txt AC 1 ms 3560 KiB
03_max_02.txt AC 2 ms 3836 KiB
03_max_03.txt AC 2 ms 3932 KiB
03_max_04.txt AC 2 ms 3748 KiB
03_max_05.txt AC 4 ms 3972 KiB
03_max_06.txt AC 1 ms 3640 KiB
03_max_07.txt AC 1 ms 3520 KiB
03_max_08.txt AC 1 ms 3860 KiB
03_max_09.txt AC 2 ms 3868 KiB
03_max_10.txt AC 4 ms 4040 KiB
03_max_11.txt AC 3 ms 3972 KiB
03_max_12.txt AC 3 ms 3972 KiB
03_max_13.txt AC 1 ms 3764 KiB
03_max_14.txt AC 2 ms 3780 KiB
04_same_00.txt AC 1 ms 3688 KiB
04_same_01.txt AC 1 ms 3756 KiB
04_same_02.txt AC 1 ms 3848 KiB
04_same_03.txt AC 1 ms 3740 KiB
04_same_04.txt AC 1 ms 3744 KiB