Painter's Partition problem

Submission ID: #5768078
#include<bits/stdc++.h>
using namespace std;

bool canPaint(long int *boards,long int n, long int k, long int mid)
{
long int cnt=0;
long int j=0;
long int sum=0;
long int temp;
// cout<<“mid”<<mid<<endl;
long int b[n];
for(int i=0;i<n;i++)
{
b[i]=boards[i];
}
for(int i=0;i<k;i++)
{
sum=0;
for(int j=n-1;j>=0;j–)
{

        while(b[j]!=-1&&sum+b[j]<=mid)
        {

            sum+=b[j];
            b[j]=-1;
        }
    }
   
}
for(int i=0;i<n;i++)
{
    if(b[i]!=-1)
    {
        return false;
    }
}

return true;
}

int main()
{
int k, n;
cin>>k>>n;
long int boards[n];
long int e=0;
for(int i=0;i<n;i++)
{
cin>>boards[i];
e+=boards[i];
}
sort(boards, boards+n);
long int s=boards[0];
long int mid;
long int ans=-1;
while(s<=e)
{
mid=(s+e)/2;
if(canPaint(boards,n, k, mid))
{
ans=mid;
e=mid-1;
}
else
{
s=mid+1;
}

}
cout<<ans;



return 0;

}

3 tests cases are failed and 3 are accepted!!

please paste the code in CB ide