Submission

Status:

PPPPPPPPPPPPPPPPPPPP

Subtask/Task Score:

100/100

Score: 100

User: chokun

Problemset: มุมขวาบน

Language: cpp

Time: 0.004 second

Submitted On: 2026-10-13 21:18:28

#include <bits/stdc++.h>
using namespace std;

int main() {
    long long n;
    cin >> n;

    if (n == 1) {
        cout << 1;
        return 0;
    }

    long long root = sqrt(n);
    long long side = root;
    if (side * side < n) {
        side++;
    }
    if (side % 2 == 0) {
        side++;
    }
 
    long long l = (side - 1) / 2;

    long long prev_max = (2 * l - 1) * (2 * l - 1);
    long long rem = n - prev_max;

    if (rem < 4 * l + 1) {
        long long ans = (l > 1) ? (2 * l - 3) * (2 * l - 3) + 6 * (l - 1) : 1;
        cout << ans;
    }else if(rem < 6 * l - 1) {
        if (rem == 6 * l - 2) {
            cout << "Cannot find top-right corner.";
        }else{
            long long ans = (l > 1) ? (2 * l - 3) * (2 * l - 3) + 6 * (l - 1) : 1;
            cout << ans;
        }
    }else if(rem == 6 * l - 1) {
        cout << n;
    }else{
        long long ans = (2 * l - 1) * (2 * l - 1) + 6 * l;
        cout << ans;
    }
}