QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#789058#9810. Obliviate, Then ReincarnateLinxRE 0ms0kbPython32.3kb2024-11-27 19:11:192024-11-27 19:11:20

Judging History

This is the latest submission verdict.

  • [2024-11-27 19:11:20]
  • Judged
  • Verdict: RE
  • Time: 0ms
  • Memory: 0kb
  • [2024-11-27 19:11:19]
  • Submitted

answer

import sys
import math

t = int(input())
cnt = [0 for i in range(1005)]
vis = [0 for i in range(1005)]
dis = [0.0 for i in range(1005)]
dl = [0.0 for i in range(1005)]
dr = [0.0 for i in range(1005)]
for _ in range(t):
	n = int(input())
	arr = [0 for i in range(n)]
	for i in range(n):
		t = input().split(' ')
		x = int(t[0])
		arr[i] = x
		cnt[x] = 0
		vis[x] = 0
		dis[x] = -1
	flag = 0
	if arr[0]==179 and _==0:
		flag = 1
	for i in range(n):
		cnt[arr[i]] = cnt[arr[i]] + 1
	arr.sort()
	
	if cnt[arr[0]]==1:
		dis[arr[0]] = 0
	if cnt[arr[n-1]]==1:
		dis[arr[n-1]] = 0
	qcnt = 0
	for i in range(n-2,0,-1):
		if vis[arr[i]]==0:
			vis[arr[i]] = 1
			if cnt[arr[i]]==1:
				if qcnt==n-2:
					exit(0)
				qcnt = qcnt + 1
				print('?',arr[i],1)
				sys.stdout.flush()
				t = input().split(' ')
				dis[arr[i]] = float(t[0]) / float(t[1])
			else:
				if arr[i]!=arr[0]:
					if qcnt==n-2:
						exit(0)
					qcnt = qcnt + 1
					if arr[i]*10-1>10000 or arr[i]*10-1<0:
						exit(0)
					print('?',arr[i]*10-1,10)
					sys.stdout.flush()
					t = input().split(' ')
					dl[arr[i]] = float(t[0]) / float(t[1])
				if arr[i]!=arr[n-1]:
					if qcnt==n-2:
						exit(0)
					qcnt = qcnt + 1
					if arr[i]*10+1>10000 or arr[i]*10+1<0:
						exit(0)
					print('?',arr[i]*10+1,10)
					sys.stdout.flush()
					t = input().split(' ')
					dr[arr[i]] = float(t[0]) / float(t[1])
	ans = 0.0
	for i in range(1,n,1):
		if arr[i-1]!=arr[i]:
			if dis[arr[i-1]]>=0 and dis[arr[i]]>=0:
				ans = ans + (dis[arr[i-1]] + dis[arr[i]]) * (arr[i] - arr[i-1])
			elif dis[arr[i-1]]<0 and dis[arr[i]]>=0:
				dist = (arr[i] - arr[i-1]) * 10
				dis[arr[i-1]] = (dr[arr[i-1]] - dis[arr[i]]) / (dist - 1) * dist + dis[arr[i]]
				ans = ans + (dis[arr[i-1]] + dis[arr[i]]) * (arr[i] - arr[i-1])
				dis[arr[i-1]] = -1
			elif dis[arr[i-1]]>=0 and dis[arr[i]]<0:
				dist = (arr[i] - arr[i-1]) * 10
				dis[arr[i]] = (dl[arr[i]] - dis[arr[i-1]]) / (dist - 1) * dist + dis[arr[i-1]]
				ans = ans + (dis[arr[i-1]] + dis[arr[i]]) * (arr[i] - arr[i-1])
				dis[arr[i]] = -1
			else:
				ans = ans + (dr[arr[i-1]] + dl[arr[i]]) * (arr[i] - arr[i-1])
	ans = ans / 2
	if int(ans+0.1)>=ans-0.1:
		print('!',int(ans+0.1),1)
	else:
		print('!',int(ans*2+0.1),2)
	sys.stdout.flush()

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 0
Dangerous Syscalls

input:

3 2 3
1 1
-1 3
1
2
3

output:


result: