QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#414685#6751. GameCodeK_GWA 24ms10992kbC++141.4kb2024-05-19 15:06:402024-05-19 15:06:40

Judging History

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

  • [2024-05-19 15:06:40]
  • 评测
  • 测评结果:WA
  • 用时:24ms
  • 内存:10992kb
  • [2024-05-19 15:06:40]
  • 提交

answer

# include <bits/stdc++.h>

using namespace std;
typedef long long LL;
const int N = 200010;
int n;
int a[N];
LL s[N], w[N];
int cnt[N];
bool st[N];
int h[N], e[N], ne[N], idx;

void add(int a, int b, int c)
{
	e[idx] = b, w[idx] = c, ne[idx] = h[a], h[a] = idx ++;
}

bool check(LL mid)
{
	int a = h[1], b = h[n + 1], c = h[0], d = h[n];
	add(1, n + 1, mid);	
	add(n + 1, 1, -mid);
	add(0, n, mid);
	add(n, 0, -mid);
	
	memset(st, 0, sizeof st);
	memset(cnt, 0, sizeof cnt);
	for(int i = 1; i <= n + 1; i ++) s[i] = 1e16;
	s[0] = 0;
	
	queue<int>q;
	q.push(0);
	while(q.size())
	{
		int t = q.front();
		q.pop();
		st[t] = false;
		for(int i = h[t]; ~i; i = ne[i])
		{
			int j = e[i];
			if(s[j] > s[t] + w[i])
			{
				s[j] = s[t] + w[i];
				cnt[j] = cnt[t] + 1;
				if(cnt[j] >= n + 2) return false;
				if(!st[j])
				{
					st[j] = true;
					q.push(j);
				}
			}
			
		}
	}

	h[n] = d;
	h[0] = c;
	h[n + 1] = b;
	h[1] = a;
	idx -= 4;

	return true;
}

int main()
{
	scanf("%d", &n);
	LL r = 0;
	for(int i = 1; i <= n; i ++) 
	{
		scanf("%d", &a[i]);
		r = r + a[i];
	}
	r /= 2;
	memset(h, -1, sizeof h);
	for(int i = 1; i <= n + 1; i ++) add(i, i - 1, 0);
	for(int i = 2; i < n + 1; i ++) add(i - 2, i, a[i]);
	add(n - 1, n + 1, a[1]);
	LL l = 0;
	while(l < r)
	{
		LL mid = l + r + 1 >> 1ll;
		if(!check(mid)) r = mid - 1;
		else l = mid;
	}
	
	printf("%lld\n", r);
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

input:

2
7 5

output:

5

result:

ok 1 number(s): "5"

Test #2:

score: 0
Accepted
time: 15ms
memory: 10992kb

input:

200000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...

output:

10000050000

result:

ok 1 number(s): "10000050000"

Test #3:

score: 0
Accepted
time: 24ms
memory: 10976kb

input:

200000
861662489 745782129 265647834 549189505 370940221 849264541 392033409 728418798 198339990 783085331 609804410 358855280 393622065 778945552 40954966 557170903 603005334 323311229 205757461 358768170 600992776 530531842 353294276 91047369 31457845 490614287 352572900 59552090 942395591 4363418...

output:

50041744223374

result:

ok 1 number(s): "50041744223374"

Test #4:

score: -100
Wrong Answer
time: 2ms
memory: 10172kb

input:

2
935731565 82105791

output:

0

result:

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