QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#398698#2338. Beautiful BridgesBIXIANWA 1ms4068kbC++141.7kb2024-04-25 16:37:042024-04-25 16:37:07

Judging History

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

  • [2024-04-25 16:37:07]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:4068kb
  • [2024-04-25 16:37:04]
  • 提交

answer

#include<iostream>
using namespace std;
int f[100001];
int n, h, a, d,ans,w;
int s[100001][2];
bool df(int a, int b)
{
	double midx = ((double)a + (double)b) / 2;
	double midy = h - ((double)b - (double)a) / 2;
	if(midy<0)
	    return 0;
	double r = ((double)b - (double)a) / 2;
	for (int i = a; i <= b; i++)
	{
		if (f[a]>=0)
		{
			if ((f[a]>=midy)&&((midx - (double)a) * (midx - (double)a) + (midy - (double)f[a]) * (midy - (double)f[a]))>(r*r))
				return 0;
		}
	}
	return 1;
}
int main()
{
	cin >> n >> h >> a >> d;
	int max1 = 0,x,fr;
	for (int i = 1; i <= 100000; i++)
		f[i] = -1;
	for (int i = 1; i <= n; i++)
	{
		cin >> x;
		cin >> f[x];
		w += a*(h - f[x]);
		ans++;
		s[ans][0] = x;
		if (f[x] > max1)
			max1 = f[x];
	}
	for (int i = 1; i < ans; i++)
	{
		s[i][1] = i + 1;
		w += d * ((s[i + 1][0] - s[i][0]) * (s[i + 1][0] - s[i][0]));
	}
	int yy1 = 1;
	bool vvv = 1;
	while (yy1 != ans)
	{
		if (!(df(s[yy1][0], s[s[yy1][1]][0])))
		{
			vvv = 0;
			break;
		}
		yy1 = s[yy1][1];
	}
	if (vvv == 0)
		cout << "impossible";
	else
	{
		while (1)
		{
			int yy = 1;
			bool v = 1;
			while (yy != ans && s[yy][1] != ans)
			{
				if (df(s[yy][0], s[s[s[yy][1]][1]][0]))
				{
					int qw = h - f[s[s[yy][1]][0]];
					int qe = (s[s[s[yy][1]][1]][0] - s[yy][0]) * (s[s[s[yy][1]][1]][0] - s[yy][0]);
					int qe1 = (s[s[s[yy][1]][1]][0] - s[s[yy][1]][0]) * (s[s[s[yy][1]][1]][0] - s[s[yy][1]][0]);
					int qe2 = (s[s[yy][1]][0] - s[yy][0]) * ((s[s[yy][1]][0] - s[yy][0]));
					if (a * qw > d * (qe - qe1 - qe2))
					{
						v = 0;
						s[yy][1] = s[s[yy][1]][1];
						w -= a * qw - d * (qe - qe1 - qe2);
					}
				}
				yy = s[yy][1];
			}
			if (v)
				break;
		}
		cout << w;
	}
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 3992kb

input:

5 60 18 2
0 0
20 20
30 10
50 30
70 20

output:

6460

result:

ok single line: '6460'

Test #2:

score: 0
Accepted
time: 1ms
memory: 3996kb

input:

4 10 1 1
0 0
1 9
9 9
10 0

output:

impossible

result:

ok single line: 'impossible'

Test #3:

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

input:

2 1 1 1
0 0
2 0

output:

6

result:

ok single line: '6'

Test #4:

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

input:

2 1 1 1
0 0
3 0

output:

impossible

result:

ok single line: 'impossible'

Test #5:

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

input:

4 5 100 1
0 0
1 3
9 3
10 0

output:

impossible

result:

wrong answer 1st lines differ - expected: '1100', found: 'impossible'