QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#789058 | #9810. Obliviate, Then Reincarnate | Linx | RE | 0ms | 0kb | Python3 | 2.3kb | 2024-11-27 19:11:19 | 2024-11-27 19:11:20 |
Judging History
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()
詳細信息
Test #1:
score: 0
Dangerous Syscalls
input:
3 2 3 1 1 -1 3 1 2 3