Bàn cờ vua

Xem PDF

Điểm: 300 (p) Thời gian: 1.0s Bộ nhớ: 1023M Input: bàn phím Output: màn hình

Một nhóm bạn trẻ định muốn tạo một kỷ lục để được ghi tên vào sách Kỷ lục Guinness với thành tích làm được bàn cờ lớn nhất thế giới. Bàn cờ phải là một hình vuông kích thước \(k\times k\), mỗi ô trong bàn cờ có kích thước \(1\times 1\), có một trong hai màu: trắng hoặc đen, 2 ô kề cạnh phải có màu khác nhau. Các bạn đã chuẩn bị được \(n\) ô màu trắng\(m\) ô màu đen, mỗi ô có kích thước \(1\times 1\).

Yếu cầu: Hãy xác định kích thước \(k\) lớn nhất của bàn cờ mà các bạn trẻ có thể làm được.

Input

  • Một dòng chứa 2 số nguyên \(n, m\) (\(0 \leq n, m \leq 10^9, 0 < m+n\)).

Output

  • Ghi một số nguyên là giá trị \(k\) tìm được.

Scoring

  • \(60\%\) số test ứng với \(60\%\) điểm của bài với \(n \leq 10^3\).
  • \(40\%\) số test ứng với \(40\%\) điểm không ràng buộc gì.

Example

Test 1

Input
8 9 
Output
4

Bình luận


  • 0
    congdz    10:46 a.m. 11 Tháng 6, 2024

    include <bits/stdc++.h>

    using namespace std;
    long long tg1,tg2,t1,t2,n,m,k1;
    int main() {
    

    // freopen("test.INP","r",stdin);
    // freopen("test.OUT","w",stdout);

        ios_base::sync_with_stdio(0);
        cin.tie(0);
        cout.tie(0);
      cin >> n >> m;
      t1=min(n,m);
      t2=max(n,m);
      k1=sqrt(t1+t1)+1;
      if(k1%2==0)
      {
          tg1=k1*(k1/2);
          tg2=tg1;
      }
      else
      {
          tg1=(k1/2+1)*(k1/2+1)+(k1/2)*(k1/2);
          tg2=tg1-1;
      }
      if(t1>=tg2 && t2>=tg1)cout<<k1;
      else cout<<k1-1;
        return 0;
    }
    
    • 4 bình luận nữa