QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#398721#2338. Beautiful BridgesBIXIANWA 1ms4104kbC++141.8kb2024-04-25 17:11:272024-04-25 17:11:27

Judging History

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

  • [2024-04-25 17:11:27]
  • 评测
  • 测评结果:WA
  • 用时:1ms
  • 内存:4104kb
  • [2024-04-25 17:11:27]
  • 提交

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 < f[a]||midy<f[b])
		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];
	}
	bool v = 0;
	for (int i = 1; i < ans; i++)
	{
		v = 0;
		for (int j = i + 1; j <= ans; j++)
		{
			if ((df(s[i][0], s[j][0])))
			{
				v = 1;
				s[i][1] = j;
				w += d * ((s[j][0] - s[i][0]) * (s[j][0] - s[i][0]));
				i = j - 1;
				break;
			}
		}
		if (!v)
		{
			cout << "impossible";
			break;
		}
	}
	if(v)
	{
		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;
	}
}

詳細信息

Test #1:

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

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: 4104kb

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: 1ms
memory: 3968kb

input:

2 1 1 1
0 0
2 0

output:

6

result:

ok single line: '6'

Test #4:

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

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: 4008kb

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'