QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#846064 | #9804. Guess the Polygon | windcity | WA | 1ms | 3880kb | C++14 | 839b | 2025-01-06 21:33:17 | 2025-01-06 21:33:22 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
inline long double query(int x,int y){
printf("? %d %d\n",x,y);
fflush(stdout);
long double a,b;
scanf("%Lf%Lf",&a,&b);
return a*1.0/b;
}
int main(){
int t;
scanf("%d",&t);
while(t--){
int n;
scanf("%d",&n);
vector<int> v(n);
for(register int i=0;i<n;++i){
int y;scanf("%d%d",&v[i],&y);
}
sort(v.begin(),v.end());
v.erase(unique(v.begin(),v.end()),v.end());
long double ans=0.0;
if((int)v.size()<n){
for(register int i=0;i+1<v.size();++i)
ans+=1.0*(v[i+1]-v[i])*query(v[i+1]+v[i],2)*2;
}
else{
for(register int i=1;i+1<v.size();++i)
ans+=1.0*(v[i+1]-v[i-1])*query(v[i],1)*2;
}
int sum=llround(ans);
if(sum&1)printf("! %d 2\n",sum);
else printf("! %d 1\n",sum/2);
fflush(stdout);
}
return 0;
}
详细
Test #1:
score: 0
Wrong Answer
time: 1ms
memory: 3880kb
input:
2 4 3 0 1 3 1 1 0 0 1 1 1 1 3 0 0 999 1000 1000 999 1999 1000
output:
? 1 2 ? 4 2 ! 3 1 ? 999 1 ! 1999 1
result:
wrong answer the answer is incorrect, expect: 1999/2, find: 1999/1 (test case 2)