QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#220039#6818. Barrel Theory1722087564AC ✓7ms3716kbC++143.1kb2023-10-19 21:02:132023-10-19 21:02:14

Judging History

你现在查看的是最新测评结果

  • [2023-10-19 21:02:14]
  • 评测
  • 测评结果:AC
  • 用时:7ms
  • 内存:3716kb
  • [2023-10-19 21:02:13]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
#define int long long
int n, m;
int c[100];
int T0;
void solve() {
	cin >> n >> m;
	if (n == 1) {
		cout << "NO\n";
		return ;
	}
	if (n == 2 && m % 2 == 0) {
		cout << "YES\n";
		cout << m / 2 << " " << m / 2 << "\n";
		return ;
	}
	if (n == 2) {
		bool  flag = false;
		for (int i = 0; i <= 20; i++) {
			if (m == (1 << i) - 1) flag = true;
		}
		if (flag) {
			cout << "NO\n";

		} else {
			cout << "YES\n";
			cout << m / 2 << " " << m / 2 + 1 << "\n";
		}
		return;
	}
	if (n == 3 && m % 2 == 0) {
		if(m==4||m==8) {
			cout<<"NO\n";
			return;
		}
		for(int i=4; i<=20; i++) {
			if(m==(1<<i)) {
				cout<<"YES\n";
				cout<<3<<" "<<(m-3)/2<<" "<<(m-3)/2+1<<"\n";
				return;
			}
		}
		for(int i=1; i<=20; i++) {
			if((m&(1<<i))&&(m>(1<<i))) {
				cout<<"YES\n";
				cout<<m/2<<" "<<m/2-(1<<(i-1))<<" "<<(1<<(i-1))<<"\n";
				return;
			}
		}

	}
	if (n == 3 && m % 2 == 1) {
		if(m==1||m==3||m==5||m==7||m==9||m==11||m==17||m==19) {
			cout<<"NO\n";
			return ;
		}
		if(m%8==5) {
			cout<<"YES\n";
			cout<<(m-5)/2<<" "<<(m-5)/2+2<<" "<<3<<"\n";
			return ;
		}
		if(m%8==7) {
			cout<<"YES\n";
			cout<<(m-7)/2+1<<" "<<(m-7)/2+3<<" "<<3<<"\n";
			return ;
		}
		if(m%16==9) {
			cout<<"YES\n";
			cout<<(m-9)/2<<" "<<(m-9)/2+4<<" "<<5<<"\n";
			return ;
		}
		if(m%16==11) {
			cout<<"YES\n";
			cout<<(m-11)/2+1<<" "<<(m-11)/2+5<<" "<<5<<"\n";
			return ;
		}
		if(m%16==1) {
			cout<<"YES\n";
			cout<<(m-17)/2+3<<" "<<(m-17)/2+7<<" "<<7<<"\n";
			return ;
		}
		if(m%16==3) {
			cout<<"YES\n";
			cout<<(m-19)/2+5<<" "<<(m-19)/2+7<<" "<<7<<"\n";
			return ;
		}
		cout<<"NO\n";
		return ;
	}


	if (n % 2 == 0 && m % 2 == 0) {
		cout << "YES\n";
		for (int i = 1; i <= n - 2; i++) {
			cout << 1 << " ";
			m--;
		}
		cout << m / 2 << " " << m / 2 << "\n";

	}
	if (n % 2 == 0 && m % 2 == 1) {
		if (m >= 2 * (n - 2) + 5) {
			cout << "YES\n";
			cout << 2 << " " << 3 << " ";
			m -= 5;
			for (int i = 1; i <= n - 4; i++) {
				cout << 2 << " ";
				m -= 2;
			}
			if (n - 2 <= 0) {
				cout << "\n";
				return;
			}
			cout << m / 2 << " " << m / 2 << "\n";
		} else cout << "NO\n";
	}
	if (n % 2 == 1 && m % 2 == 0) {
		if (m >= 6 + n - 3) {
			cout << "YES\n";
			cout << 1 << " " << 2 << " " << 3 << " ";
			m -= 6;
			for (int i = 1; i <= n - 3 - 2; i++) {
				cout << 1 << " ";
				m--;
			}
			if (n - 3 <= 0) {
				cout << "\n";
				return;
			}
			cout << m / 2 << " " << m / 2 << "\n";
		} else cout << "NO\n";

	}
	if (n % 2 == 1 && m % 2 == 1) {
		if (m >= 2 * (n - 3) + 13) {
			cout << "YES\n";
			cout << 2 << " " << 4 << " " << 7 << " ";
			m -= 13;
			for (int i = 1; i <= n - 3 - 2; i++) {
				cout << 2 << " ";
				m -= 2;
			}
			if (n - 3 <= 0) {
				cout << "\n";
				return;
			}
			cout << m / 2 << " " << m / 2 << "\n";
		} else cout << "NO\n";
	}
}

signed main() {
	std::ios::sync_with_stdio(false);
	std::cin.tie(0);
	int T = 1;
	cin >> T;

	for(T0=1; T0<=T; T0++) {

		solve();
	}




	return 0;
}

这程序好像有点Bug,我给组数据试试?

详细

Test #1:

score: 100
Accepted
time: 0ms
memory: 3620kb

input:

3
6 7
5 17
4 4

output:

NO
YES
2 4 7 2 2
YES
1 1 1 1

result:

ok T=3 (3 test cases)

Test #2:

score: 0
Accepted
time: 2ms
memory: 3588kb

input:

4194
1 1
1 2
1 3
1 4
1 5
1 6
1 7
1 8
1 9
1 10
1 11
1 12
1 13
1 14
1 15
1 16
1 17
1 18
1 19
1 20
1 21
1 22
1 23
1 24
1 25
1 26
1 27
1 28
1 29
1 30
1 31
1 32
1 33
1 34
1 35
1 36
1 37
1 38
1 39
1 40
1 41
1 42
1 43
1 44
1 45
1 46
1 47
1 48
1 49
1 50
1 51
1 52
1 53
1 54
1 55
1 56
1 57
1 58
1 59
1 60
1 61...

output:

NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
NO
...

result:

ok T=4194 (4194 test cases)

Test #3:

score: 0
Accepted
time: 0ms
memory: 3624kb

input:

1
2 10000000

output:

YES
5000000 5000000

result:

ok T=1 (1 test case)

Test #4:

score: 0
Accepted
time: 0ms
memory: 3628kb

input:

1
3 9999999

output:

YES
4999997 4999999 3

result:

ok T=1 (1 test case)

Test #5:

score: 0
Accepted
time: 0ms
memory: 3620kb

input:

1
5 9999999

output:

YES
2 4 7 4999993 4999993

result:

ok T=1 (1 test case)

Test #6:

score: 0
Accepted
time: 0ms
memory: 3632kb

input:

1
6 9999999

output:

YES
2 3 2 2 4999995 4999995

result:

ok T=1 (1 test case)

Test #7:

score: 0
Accepted
time: 0ms
memory: 3580kb

input:

1
6 10000000

output:

YES
1 1 1 1 4999998 4999998

result:

ok T=1 (1 test case)

Test #8:

score: 0
Accepted
time: 6ms
memory: 3716kb

input:

20
42 500000
18468 500000
6335 500000
6501 500000
19170 500000
15725 500000
11479 500000
9359 500000
6963 500000
4465 500000
5706 500000
8146 500000
3282 500000
16828 500000
9962 500000
492 500000
2996 500000
11943 500000
4828 500000
5437 500000

output:

YES
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 249980 249980
YES
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok T=20 (20 test cases)

Test #9:

score: 0
Accepted
time: 4ms
memory: 3584kb

input:

20
46 500000
9217 500000
4199 500000
17796 500000
9485 500000
19651 500000
14591 500000
6432 500000
10706 500000
18317 500000
5558 500000
8190 500000
12653 500000
607 500000
12154 500000
17830 500000
9814 500000
10368 500000
6659 500000
8962 500000

output:

YES
1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 249978 249978
YES
1 2 3 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...

result:

ok T=20 (20 test cases)

Test #10:

score: 0
Accepted
time: 2ms
memory: 3632kb

input:

5104
2 2
2 3
2 4
2 5
2 6
2 7
2 8
2 9
2 10
2 11
2 12
2 13
2 14
2 15
2 16
2 17
2 18
2 19
2 20
2 21
2 22
2 23
2 24
2 25
2 26
2 27
2 28
2 29
2 30
2 31
2 32
2 33
2 34
2 35
2 36
2 37
2 38
2 39
2 40
2 41
2 42
2 43
2 44
2 45
2 46
2 47
2 48
2 49
2 50
2 51
2 52
2 53
2 54
2 55
2 56
2 57
2 58
2 59
2 60
2 61
2 6...

output:

YES
1 1
NO
YES
2 2
YES
2 3
YES
3 3
NO
YES
4 4
YES
4 5
YES
5 5
YES
5 6
YES
6 6
YES
6 7
YES
7 7
NO
YES
8 8
YES
8 9
YES
9 9
YES
9 10
YES
10 10
YES
10 11
YES
11 11
YES
11 12
YES
12 12
YES
12 13
YES
13 13
YES
13 14
YES
14 14
YES
14 15
YES
15 15
NO
YES
16 16
YES
16 17
YES
17 17
YES
17 18
YES
18 18
YES
18 ...

result:

ok T=5104 (5104 test cases)

Test #11:

score: 0
Accepted
time: 7ms
memory: 3640kb

input:

33333
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
3 300
...

output:

YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
150 148 2
YES
15...

result:

ok T=33333 (33333 test cases)