Submission #33635759


Source Code Expand

// Problem: D - Non Arithmetic Progression Set
// Contest: AtCoder - AtCoder Regular Contest 145
// URL: https://atcoder.jp/contests/arc145/tasks/arc145_d
// Memory Limit: 1024 MB
// Time Limit: 2000 ms

#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <vector>
typedef long long llt;
typedef unsigned uint;typedef unsigned long long ullt;
typedef bool bol;typedef char chr;typedef void voi;
typedef double dbl;
template<typename T>bol _max(T&a,T b){return(a<b)?a=b,true:false;}
template<typename T>bol _min(T&a,T b){return(b<a)?a=b,true:false;}
template<typename T>T lowbit(T n){return n&-n;}
template<typename T>T gcd(T a,T b){return b?gcd(b,a%b):a;}
template<typename T>T lcm(T a,T b){return(a!=0||b!=0)?a/gcd(a,b)*b:(T)0;}
template<typename T>T exgcd(T a,T b,T&x,T&y){if(b!=0){T ans=exgcd(b,a%b,y,x);y-=a/b*x;return ans;}else return y=0,x=1,a;}
template<typename T>T power(T base,T index,T mod)
{
    T ans=1%mod;
    while(index)
    {
        if(index&1)ans=ans*base%mod;
        base=base*base%mod,index>>=1;
    }
    return ans;
}
const uint Lim=1e7;
uint Prime[2000005],tp;
bol Gone[Lim+1];
int Used[2000005];
uint Id[Lim+1];
uint n;llt m;
uint cnt=0;llt sum=0;
voi Output(llt v)
{
	printf("%lld ",v);
	cnt++;sum+=v;
}
voi print()
{
	for(uint i=0;i<tp;i++)if(Used[i])Output((llt)Used[i]*Prime[i]);
	puts("");
	if(sum!=m||cnt!=n)puts("\nWA"),exit(1);
	exit(0);
}
voi dfs(uint n,llt v,uint tp)
{
	if(!n){
		if(!v)print();
		return;
	}
	if(!v)
	{
		if(n==1)Output(0),n=0;
		if(n&1){Used[0]=Used[1]=1,Used[2]=-1,n-=3;}
		for(uint i=::tp-1;n;i--)if(!Used[i])Output(Prime[i]),Output(-(int)Prime[i]),n-=2;
		print();
	}
	if(abs(v)<=Lim&&!Gone[abs(v)]&&!Used[Id[abs(v)]])
	{
		Used[Id[abs(v)]]=v>0?1:-1;
		dfs(n-1,0,0);
	}
	if(n==1)return;
	for(uint i=tp-1;i>2;i--)if(!Used[i])
	{
		if(v>0)Used[i]=1,dfs(n-1,v-Prime[i],i);
		else Used[i]=-1,dfs(n-1,v+Prime[i],i);
		Used[i]=0;
	}
	return;
}
int main()
{
	Gone[0]=Gone[1]=true;
    for(uint i=2;i<=Lim;i++)if(!Gone[i]){Prime[Id[i]=tp++]=i;for(uint j=i<<1;j<=Lim;j+=i)Gone[j]=true;}
    // printf("%u\n",tp);
    scanf("%u%lld",&n,&m);
    if(n==1)printf("%lld\n",m);
    else if(n==2)printf("0 %lld\n",m);
    else dfs(n,m,tp-1),exit(1);
    return 0;
}

Submission Info

Submission Time
Task D - Non Arithmetic Progression Set
User myee
Language C++ (Clang 10.0.0)
Score 0
Code Size 2312 Byte
Status WA
Exec Time 120 ms
Memory 54688 KiB

Judge Result

Set Name Sample All
Score / Max Score 0 / 0 0 / 700
Status
AC × 2
AC × 2
WA × 30
Set Name Test Cases
Sample 00_sample_01.txt, 00_sample_02.txt
All 00_sample_01.txt, 00_sample_02.txt, 01_random_01.txt, 01_random_02.txt, 01_random_03.txt, 01_random_04.txt, 01_random_05.txt, 01_random_06.txt, 01_random_07.txt, 01_random_08.txt, 01_random_09.txt, 01_random_10.txt, 01_random_11.txt, 01_random_12.txt, 01_random_13.txt, 01_random_14.txt, 01_random_15.txt, 02_max_01.txt, 02_max_02.txt, 02_max_03.txt, 02_max_04.txt, 02_max_05.txt, 02_max_06.txt, 02_max_07.txt, 02_max_08.txt, 02_max_09.txt, 02_max_10.txt, 02_max_11.txt, 02_max_12.txt, 02_max_13.txt, 02_max_14.txt, 02_max_15.txt
Case Name Status Exec Time Memory
00_sample_01.txt AC 120 ms 54656 KiB
00_sample_02.txt AC 110 ms 54480 KiB
01_random_01.txt WA 109 ms 54508 KiB
01_random_02.txt WA 111 ms 54504 KiB
01_random_03.txt WA 110 ms 54656 KiB
01_random_04.txt WA 111 ms 54436 KiB
01_random_05.txt WA 111 ms 54436 KiB
01_random_06.txt WA 109 ms 54664 KiB
01_random_07.txt WA 110 ms 54652 KiB
01_random_08.txt WA 111 ms 54452 KiB
01_random_09.txt WA 109 ms 54628 KiB
01_random_10.txt WA 115 ms 54536 KiB
01_random_11.txt WA 112 ms 54680 KiB
01_random_12.txt WA 109 ms 54464 KiB
01_random_13.txt WA 110 ms 54652 KiB
01_random_14.txt WA 110 ms 54536 KiB
01_random_15.txt WA 114 ms 54680 KiB
02_max_01.txt WA 112 ms 54688 KiB
02_max_02.txt WA 111 ms 54436 KiB
02_max_03.txt WA 112 ms 54540 KiB
02_max_04.txt WA 112 ms 54452 KiB
02_max_05.txt WA 113 ms 54484 KiB
02_max_06.txt WA 111 ms 54660 KiB
02_max_07.txt WA 109 ms 54460 KiB
02_max_08.txt WA 111 ms 54448 KiB
02_max_09.txt WA 113 ms 54452 KiB
02_max_10.txt WA 110 ms 54504 KiB
02_max_11.txt WA 114 ms 54556 KiB
02_max_12.txt WA 111 ms 54552 KiB
02_max_13.txt WA 110 ms 54492 KiB
02_max_14.txt WA 110 ms 54500 KiB
02_max_15.txt WA 110 ms 54528 KiB