DANDAU - Dãy con đan dấu dài nhất

Xem dạng PDF

Gửi bài giải

Điểm: 1,00 (OI)
Giới hạn thời gian: 1.0s
Giới hạn bộ nhớ: 256M

Tác giả:
Dạng bài
Ngôn ngữ cho phép
C, C#, C++, Go, Java, Pascal, Perl, PHP, Python, Ruby, Rust, Scratch, Swift

Hãy lập trình tìm độ dài của dãy đan dấu lớn nhất trong mảng A có N phần tử!!!

Input

Dòng đầu tiên là số N(~ 1 \le N \le 10^5 ~)

N dòng tiếp theo là N phần tử ~ A_1 ~ , ~  A_2 ~ , ~ A_3 ~ , ... , ~ A_N ~ (~ - 10^5 \le A_i \le 10^5 ~)

Output

1 dòng là độ dài dãy con đan dấu dài nhất . Nếu không có dãy con đan dấu nào thì in ra -1

Sample

Input #1
5
1
-2
3
4
5
Output #1
3

Hint

Ở test 1 , ta thấy dãy đan dấu dài nhất là 1 -2 3 có độ dài là 3 phần tử nên đáp án của test 1 là 3

Problem source: apok


Bình luận

Hãy đọc nội quy trước khi bình luận.



  • 0
    hohoanghai5042011  đã bình luận lúc 19, Tháng 1, 2024, 12:30

    include <iostream>

    include <vector>

    using namespace std;

    int findLongestSignSequence(vector<int>& A, int N) { if (N <= 0) { return -1; }

    int maxLength = 1;
    int currentLength = 1;
    
    for (int i = 1; i < N; ++i) {
        if ((A[i] > 0 && A[i - 1] < 0) || (A[i] < 0 && A[i - 1] > 0)) {
            currentLength++;
        } else {
            maxLength = max(maxLength, currentLength);
            currentLength = 1;
        }
    }
    
    maxLength = max(maxLength, currentLength);
    
    if (maxLength <= 1) {
        return -1;
    }
    
    return maxLength;
    

    }

    int main() { int N; cin >> N;

    vector<int> A(N);
    
    for (int i = 0; i < N; ++i) {
        cin >> A[i];
    }
    
    int result = findLongestSignSequence(A, N);
    
    cout << result << endl;
    
    return 0;
    

    } full ac


  • -22
    nhattan7a6  đã bình luận lúc 27, Tháng 7, 2023, 8:43

    Bình luận này đã bị ẩn vì có quá nhiều phản ứng tiêu cực. Nhấn để xem.