Viết chương trình giải bài toán:Nam có n viên gạch được đánh số từ 1 đến n. Các viên gạch có độ cứng lần lượt là a1, a2,..., an. Một viên gạch có độ cứng x nghĩa là Nam có thể chồng lên trên viên gạch đó tối đa x viên gạch khác, nếu chồng nhiều hơn thì viên gạch đó bị vỡ. Hỏi Nam có thể sắp được chồng gạch cao nhất là bao nhiêu?Dữ liệu nhập:- Dòng đầu tiên là số nguyên n (1 ≤ n ≤ 100) - là số viên gạch.- Dòng tiếp theo gồm n số nguyên a1, a2,..., an (0 ≤ ai ≤ 100) mỗi số cách nhau một khoảng trắng.Dữ liệu xuất- Là số nguyên xác định chiều cao cao nhất của chồng gạch mà Nam sắp được.
Dữ liệu nhập:
– Dòng đầu tiên là số nguyên n (1 ≤ n ≤ 100) – là số viên gạch.
– Dòng tiếp theo gồm n số nguyên a1, a2,…, an (0 ≤ ai ≤ 100) mỗi số cách nhau một khoảng trắng.
Dữ liệu xuất
– Là số nguyên xác định chiều cao cao nhất của chồng gạch mà Nam sắp được.
Ví dụInput31 2 1Output3 Input6
0 0 0 0 0 0Output1
Thuật toán
Sắp xếp mảng theo hướng tăng dần, dùng 1 biến đếm kiểm tra các phần tử a[i] , nếu a[i] lớn hơn thì tăng biến đếm và đó là kết quả bài toán.
Dữ liệu nhập:
– Dòng đầu tiên là số nguyên n (1 ≤ n ≤ 100) – là số viên gạch.
– Dòng tiếp theo gồm n số nguyên a1, a2,…, an (0 ≤ ai ≤ 100) mỗi số cách nhau một khoảng trắng.
Dữ liệu xuất
– Là số nguyên xác định chiều cao cao nhất của chồng gạch mà Nam sắp được.
Ví dụInput31 2 1Output3 Input6
0 0 0 0 0 0Output1
Thuật toán
Sắp xếp mảng theo hướng tăng dần, dùng 1 biến đếm kiểm tra các phần tử a[i] , nếu a[i] lớn hơn thì tăng biến đếm và đó là kết quả bài toán.
1 2 1Output3 Input6
0 0 0 0 0 0Output1
code của mình như này, vẫn có chỗ sai sót mong được sửa giúp với ạ
bool comp(long long a, long long b)
{
return a>b;
}
int main()
{
long long n,h=0,maxn=0,c=0;
cin>>n;
long long a[n];
for (int i=1;i<=n;i++)
cin>>a[i];
sort(a,a+n,comp);
c=a[1]+1;
for (int i=1;i<=n;i++)
h=min(c,a[i]+i);
if (a[1]==0) cout<<"1";
else cout<<h;