78D - Archer's Shot - CodeForces Solution


binary search geometry math two pointers *2300

Please click on ads to support us..

C++ Code:

#include <iostream>
#include <cmath>

using namespace std;

long long r, x, y;

bool check(long long x, long long y)
{
    return (((x+1) * (x+1) + 3 * (y+1) * (y+1)) <= (4 * r * r) && ((x+2) * (x+2) + 3 * y * y) <= (4 * r * r));
}


int main()
{
    cin >> r;
    y = 0, x = 0;
    while (check(x, y)) y+=2;
    long long ans = y - 1;
    while (x + 1 <= 2*r)
    {
        if (x != 0)
            ans += 2 * (y + 1);
        x+=3;
        y+=1;
        while (y>=0 && !check(x, y)) y-=2;
    }
    cout <<  ans;
}


Comments

Submit
0 Comments
More Questions

1637C - Andrew and Stones
1334B - Middle Class
260C - Balls and Boxes
1554A - Cherry
11B - Jumping Jack
716A - Crazy Computer
644A - Parliament of Berland
1657C - Bracket Sequence Deletion
1657B - XY Sequence
1009A - Game Shopping
1657A - Integer Moves
230B - T-primes
630A - Again Twenty Five
1234D - Distinct Characters Queries
1183A - Nearest Interesting Number
1009E - Intercity Travelling
1637B - MEX and Array
224A - Parallelepiped
964A - Splits
1615A - Closing The Gap
4C - Registration System
1321A - Contest for Robots
1451A - Subtract or Divide
1B - Spreadsheet
1177A - Digits Sequence (Easy Edition)
1579A - Casimir's String Solitaire
287B - Pipeline
510A - Fox And Snake
1520B - Ordinary Numbers
1624A - Plus One on the Subset