Submission #1297669

#TimeUsernameProblemLanguageResultExecution timeMemory
1297669ThunnusNicelines (RMI20_nicelines)C++20
0 / 100
1 ms408 KiB
#include "nice_lines.h"
#include<bits/stdc++.h>
#pragma GCC optimize("unroll-loops,O3")
using namespace std;
using i64 = long long;
//#define int i64
#define vi vector<int>
#define vvi vector<vi>
#define vb vector<bool>
#define se second
#define fi first
#define pii pair<int, int>
#define sz(x) (int)(x).size()
#define double long double

const double INF = 2e12;

void solve(int sid, int n){
    i64 lo = -INF, hi = INF, m1, m2;
    int a = 1, b = 1;
    while(hi > lo){
        m1 = lo + (hi - lo) / 3;
        m2 = hi - (hi - lo) / 3;
        double q1 = query(0, m1), q2 = query(0, q2);
        if(q1 == q2){
            b = m1;
            break;
        }
        if(q1 > q2){
            lo = m1 + 1;
        }
        else{
            hi = m2 - 1;
        }
    }


    int y = 1;
    if(y == b) y++;
    lo = -INF, hi = INF;
    while(hi > lo){
        m1 = lo + (hi - lo) / 3;
        m2 = hi - (hi - lo) / 3;
        double q1 = query(m1, y), q2 = query(m2, y);
        if(q1 == q2){
            a = m1;
            break;
        }
        if(q1 > q2){
            lo = m1 + 1;
        }
        else{
            hi = m2 - 1;
        }
    }

    int slope = (a - b) / (y - 0);
    vi av, bv;
    av.emplace_back(slope), bv.emplace_back(b);
    the_lines_are(av, bv);
    return;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...