제출 #1144154

#제출 시각아이디문제언어결과실행 시간메모리
1144154AlgorithmWarrior서열 (APIO23_sequence)C++20
컴파일 에러
0 ms0 KiB
#include <bits/stdc++.h>
using namespace std;

const int MAXN = 100000;

int n;
vector<int> a;

long long countMedianSubarrays(int median) {
    vector<int> trans(n);
    int medianIndex = -1;

    // Transformăm array-ul în -1, 0, +1
    for (int i = 0; i < n; ++i) {
        if (a[i] < median) trans[i] = -1;
        else if (a[i] > median) trans[i] = 1;
        else {
            trans[i] = 0;
            medianIndex = i;  // reținem poziția medianei
        }
    }

    // Folosim un hash map pentru a număra prefix sum-urile
    unordered_map<int, int> freqLeft, freqRight;
    int sum = 0;
    long long result = 0;

    // Contorizăm prefix sum-urile din stânga medianei
    for (int i = medianIndex; i >= 0; --i) {
        sum += trans[i];
        freqLeft[sum]++;
    }

    sum = 0;

    // Contorizăm prefix sum-urile din dreapta medianei
    for (int i = medianIndex; i < n; ++i) {
        sum += trans[i];
        freqRight[sum]++;
    }

    // Calculăm câte subsecvențe sunt valide
    for (auto [key, count] : freqLeft) {
        result += count * freqRight[-key];
    }

    return result;
}

int main() {
    cin >> n;
    a.resize(n);
    for (int i = 0; i < n; ++i) {
        cin >> a[i];
    }

    long long totalSubarrays = 0;
    for (int i = 0; i < n; ++i) {
        totalSubarrays += countMedianSubarrays(a[i]);
    }

    cout << totalSubarrays << endl;
    return 0;
}

컴파일 시 표준 에러 (stderr) 메시지

/usr/bin/ld: /tmp/ccdLhHra.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccL2XL2W.o:sequence.cpp:(.text.startup+0x0): first defined here
/usr/bin/ld: /tmp/ccdLhHra.o: in function `main':
grader.cpp:(.text.startup+0x2c7): undefined reference to `sequence(int, std::vector<int, std::allocator<int> >)'
collect2: error: ld returned 1 exit status