CSES - Collecting Numbers | Thu thập số

Xem PDF

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

Bạn được cho một mảng mà chứa mỗi số giữa \(1\ldots n\) chính xác một lần. Nhiệm vụ của bạn là thu thập các số từ \(1\) đến \(n\) theo thứ tự tăng dần.

Trong mỗi vòng, bạn đi qua mảng từ trái sang phải và thu thập nhiều số nhất có thể. Tổng số lượng vòng sẽ là bao nhiêu?

Input

  • Dòng đầu tiên có hai số nguyên \(n\): kích thước mảng.
  • Dòng tiếp theo có \(n\) số nguyên \(x_1,x_2,\ldots,x_n\): các số trong mảng.

Output

  • In một số nguyên: số lượng vòng.

Constraints

  • \(1 \le n \le 2 \cdot 10^5\)

Example

Sample input

5
4 2 1 5 3

Sample output

3


Bình luận


  • 0
    penistone    3:11 p.m. 25 Tháng 12, 2023 chỉnh sửa 5

    Gợi ý

    sắp xếp lại giá trị phần tử (nhớ lưu lại vị trí cũ của mỗi phần tử), sau đó xét xem vị trí cũ của phần tử nhỏ hơn có đứng sau vị trí cũ của phần tử lớn hơn nó không, nếu có thì ta phải chạy thêm 1 vòng để đến phần tử đó và do đó kết quả sẽ thêm 1

    Code tại đây

    https://ideone.com/ROFLhx


    • 0
      clminhquan    12:53 p.m. 3 Tháng 8, 2023

      include<bits/stdc++.h>

      using namespace std;

      int main(){

      int n;

      cin>>n;

      int a[n+1],t=1,d=1;

      for (int i=1;i<=n;i++)

      { cin>>d;a[d]=i; }

      d=1;

      for (int i=1;i<=n;i++) { if (d>a[i]) { t++; } d=a[i]; }

      cout<<t;

      }
      full ac cho ae nha

      1 phản hồi

      • 0
        dunpc1412    9:16 p.m. 11 Tháng 1, 2023

        TRONG ĐỀ BÀI KO CÓ M SAO TRONG PHẦN INPUT LẠI CÓ M Ở ĐÓ Ạ???????????????


        • 0
          Who_you_knows_Who    2:26 p.m. 30 Tháng 9, 2022

          Mong admin chỉnh lại đề chỗ này ạ!!