QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#755025#7781. Sheep Eat WolvesbexiaoheWA 0ms3720kbC++142.2kb2024-11-16 16:16:582024-11-16 16:17:03

Judging History

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

  • [2024-11-16 16:17:03]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3720kb
  • [2024-11-16 16:16:58]
  • 提交

answer

#include<bits/stdc++.h>
#define endl '\n'

using namespace std;

const int N = 2e5 + 5;
int n, m, k, x, y, T = 1, p, q;
int f_la,f_lb,f_ra,f_rb;
#define zy if(l_a<=0){break;}

void solve()
{
	cin >> x >> y >> p >> q;
	int l_a = x, l_b = y, r_a = 0, r_b = 0;
	f_la=l_a,f_lb=l_b,f_ra=r_a,f_rb=r_b;
	int ans = 0;
	bool judge = 1;
	while (l_a > 0) {
		if (l_a <= p&&judge==1) {
			++ans;
			cout << ans << endl;
			return;
		}
		++ans;
		if (judge == 1) {
			
			int tt = l_a - l_b + q;
			if (tt == 0) {
				int tmp = p;
				if(tmp<2){
					cout<<"-1"<<endl;
					return;
				}
				int kk = tmp / 2;
				kk = min({ kk,l_a,l_b });
				tmp -= kk * 2;
				l_a -= kk, l_b -= kk, r_a += kk, r_b += kk;zy
				if (l_b == 0 && tmp != 0) {
					kk=min(tmp,l_a);
					r_a += kk;
					l_a -= kk;
					zy
				}
			}
			else if (tt < 0) {
				int tmp = p;
				int kk = min({ tmp,abs(tt) });
				tt += kk;
				tmp -= kk;
				l_b -= kk, r_b += kk;
				if (tt < 0) {
					cout << "-1" << endl;
					return;
				}
				kk = tmp / 2;
				kk = min({ kk,l_a,l_b });
				tmp -= kk * 2;
				l_a -= kk, l_b -= kk, r_a += kk, r_b += kk;
				zy
				if (l_b == 0 && tmp != 0) {
					kk=min(tmp,l_a);
					r_a += kk;
					l_a -= kk;
					zy
				}
			}
			else if (tt > 0) {
				int tmp = p;
				int kk = min({ tmp,tt,l_a });
				l_a -= kk, r_a += kk;
				tmp -= kk;
				tt -= kk;zy
				
				kk = tmp / 2;
				kk = min({ kk,l_a,l_b });
				tmp -= kk * 2;
				l_a -= kk, l_b -= kk, r_a += kk, r_b += kk;zy
				if (l_b == 0 && tmp != 0) {
					kk=min(tmp,l_a);
					r_a += kk;
					l_a -= kk;
					zy
				}
			}
			if(f_la==l_a&&f_lb==l_b&&f_ra==r_a&&f_rb==r_b){
				cout<<"-1"<<endl;
				return;
			}
			else{
				f_la=l_a,f_lb=l_b,f_ra=r_a,f_rb=r_b;
			}
		}
		else if (judge == 0) {
			if (r_a != 0) {
				int tt = r_a - r_b + q;
				if (tt < 0) {
					int tmp = p;
					int kk = min({ r_b,tmp,abs(tt) });
					tt += kk, r_b -= kk, l_b += kk;
					if (tt < 0) {
						cout << "-1" << endl;
						return;
					}
				}
			}
		}
		if (judge == 1)judge = 0;
		else judge = 1;
	}
	cout << ans << endl;
}

int main()
{
	ios::sync_with_stdio(false), cin.tie(0);
	
	//cin >> T;
	while (T--) solve();
	
	return 0;
}

詳細信息

Test #1:

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

input:

4 4 3 1

output:

3

result:

ok 1 number(s): "3"

Test #2:

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

input:

3 5 2 0

output:

5

result:

ok 1 number(s): "5"

Test #3:

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

input:

2 5 1 1

output:

-1

result:

ok 1 number(s): "-1"

Test #4:

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

input:

1 1 1 0

output:

1

result:

ok 1 number(s): "1"

Test #5:

score: -100
Wrong Answer
time: 0ms
memory: 3664kb

input:

3 3 1 1

output:

-1

result:

wrong answer 1st numbers differ - expected: '7', found: '-1'