QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#794117#9804. Guess the PolygonquailtyAC ✓0ms0kbC++23919b2024-11-30 11:18:162024-11-30 11:24:25

Judging History

This is a historical verdict posted at 2024-11-30 11:24:25.

  • [2024-11-30 11:51:39]
  • 管理员手动重测本题所有提交记录
  • Verdict: AC
  • Time: 10ms
  • Memory: 4104kb
  • [2024-11-30 11:25:20]
  • 管理员手动重测该提交记录
  • Verdict: 0
  • Time: 0ms
  • Memory: 0kb
  • [2024-11-30 11:24:25]
  • Judged
  • Verdict: 0
  • Time: 0ms
  • Memory: 0kb
  • [2024-11-30 11:18:16]
  • Submitted

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

input:


output:


result: