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;
}
}