CSES - Datatähti 2021 alku - Results
Submission details
Task:Alitaulukot
Sender:Salama
Submission time:2020-10-01 18:12:55 +0300
Language:C++17
Status:COMPILE ERROR

Compiler report

output/cc9TI9Fw.o: In function `std::future<std::result_of<std::decay<int (*)(int*, int, int, int, bool)>::type (std::decay<int*&>::type, std::decay<int&>::type, std::decay<double>::type, std::decay<int>::type, std::decay<bool>::type)>::type> std::async<int (*)(int*, int, int, int, bool), int*&, int&, double, int, bool>(std::launch, int (*&&)(int*, int, int, int, bool), int*&, int&, double&&, int&&, bool&&)':
code.cpp:(.text._ZSt5asyncIPFiPiiiibEJRS0_RidibEESt6futureINSt9result_ofIFNSt5decayIT_E4typeEDpNS7_IT0_E4typeEEE4typeEESt6launchOS8_DpOSB_[_ZSt5asyncIPFiPiiiibEJRS0_RidibEESt6futureINSt9result_ofIFNSt5decayIT_E4typeEDpNS7_IT0_E4typeEEE4typeEESt6launchOS8_DpOSB_]+0x2c9): undefined reference to `pthread_create'
output/cc9TI9Fw.o: In function `std::future<std::result_of<std::decay<int (*)(int*, int, int, int, bool)>::type (std::decay<int*&>::type, std::decay<int&>::type, std::decay<int&>::type, std::decay<double>::type, std::decay<bool>::type)>::type> std::async<int (*)(int*, int, in...

Code

#include <iostream>
#include <string>
#include <thread>
#include <future>
#include <math.h>

using namespace std;
int count(int list[], int biggestSub, int goal, int index, bool final) {
    int smallestInList, biggestInList, i;
    int ans = 0;
    while (index < goal) {
        i = 0;
        smallestInList = 1000000001;
        biggestInList = -1;
        while (true) {
            if (index + i == goal && final) break;
            if (list[index + i] < smallestInList)
                smallestInList = list[index + i];
            if (list[index + i] > biggestInList)
                biggestInList = list[index + i];
            if(biggestInList - smallestInList > biggestSub) break;
            i++;
        }
        ans += i;
        index++;
    }
    return ans;
}
int main() {
    int listSize, biggestSub;
    cin >> listSize >> biggestSub;
    int* list = new int[listSize];
    int ans = 0;
    
    for (int i = 0; i < listSize; i++) {
        cin >> list[i];
    }
    future<int> ans0 = async(launch::async, &count, list, biggestSub, round(listSize/2), 0, false);
    future<int> ans1 = async(launch::async, &count, list, biggestSub, listSize, round(listSize/2), true);
    ans += ans0.get();
    ans += ans1.get();
    cout << ans;
}