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 ){
      |                  ~~~~^~~~~