Submission #467156

#TimeUsernameProblemLanguageResultExecution timeMemory
467156theconfusedguyBigger segments (IZhO19_segments)C++14
Compilation error
0 ms0 KiB
#include <bits/stdc++.h>
#define SPEED ios_base::sync_with_stdio(false);cin.tie(NULL);

using namespace std;


typedef long long int lli;
typedef vector<int> vi;
typedef vector<long long int> vll;

const int mod = 1000000007;

int binarySearch(int arr[], int N, int end, vll& prefSums, vll& prevMinimalSums ){
    int low = 0, high = end - 1;
    int ansIdx = 0;
    while( low <= high ){
        int mid = ( high - low ) / 2 + low;
        lli currSum = prefSums[end] - prefSums[mid];
        if( currSum >= prevMinimalSums[mid] ){
            ansIdx = mid;
            low = mid + 1;
        }
        else{
            high = mid - 1;
        }
    }
    return ansIdx;
}


int main(){
    SPEED;

    int N; cin >> N;
    lli arr[N+1];
    for( int i = 1; i <= N; i++ ) cin >> arr[i];
    vll dp(N+2, 0), prevMinimalSum(N+2, 0), prefSums(N+2, 0);
    for( int i = 1; i <= N; i++ ){
        prefSums[i] = prefSums[i-1] + arr[i];
    }
    
    dp[1] = 1;
    prevMinimalSum[1] = arr[1];

    for( int i = 2; i <= N; i++ ){
        int idx = binarySearch(arr, N, i, prefSums, prevMinimalSum );
        dp[i] = dp[idx] + 1;
        prevMinimalSum[i] = prefSums[i] - prefSums[idx];
    }

    cout << dp[N] << endl;
    return 0;
}

Compilation message (stderr)

segments.cpp: In function 'int main()':
segments.cpp:46:32: error: cannot convert 'lli*' {aka 'long long int*'} to 'int*'
   46 |         int idx = binarySearch(arr, N, i, prefSums, prevMinimalSum );
      |                                ^~~
      |                                |
      |                                lli* {aka long long int*}
segments.cpp:13:22: note:   initializing argument 1 of 'int binarySearch(int*, int, int, vll&, vll&)'
   13 | int binarySearch(int arr[], int N, int end, vll& prefSums, vll& prevMinimalSums ){
      |                  ~~~~^~~~~