QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#794117 | #9804. Guess the Polygon | quailty | AC ✓ | 0ms | 0kb | C++23 | 919b | 2024-11-30 11:18:16 | 2024-11-30 11:25:20 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
typedef long double db;
db query(int p,int q)
{
printf("? %d %d\n",p,q);
fflush(stdout);
db r,s;
scanf("%Lf%Lf",&r,&s);
return r/s;
}
int solve()
{
int n;
scanf("%d",&n);
vector<int> x(n);
for(int i=0;i<n;i++)
scanf("%d%*d",&x[i]);
sort(x.begin(),x.end());
x.erase(unique(x.begin(),x.end()),x.end());
db dres=0;
if((int)x.size()<n)
{
for(size_t i=0;i+1<x.size();i++)
dres+=2*(x[i+1]-x[i])*query(x[i]+x[i+1],2);
}
else
{
for(size_t i=1;i+1<x.size();i++)
dres+=(x[i+1]-x[i-1])*query(x[i],1);
}
int res=llround(dres);
if(res&1)printf("! %d 2\n",res);
else printf("! %d 1\n",res/2);
fflush(stdout);
return 0;
}
int main()
{
int T;
scanf("%d",&T);
while(T--)solve();
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Time Limit Exceeded