 # Need help for problem code NOKIA

I’m just starting to learn programming and I was solving the problem whose code is NOKIA for practice. I’ve coded a solution which is almost the same as the editorial for that problem.

``````#include <iostream>
#include <limits.h>
#include <vector>
#include <set>

using namespace std;

static bool DEBUG = false;

int GIF(double num){ return (num-(int)num)>0.0000?(num+1):num;}

int main()
{
int cases, n, m, wastedWire, tmp = 0;
cin>>cases;
while(cases--)
{
cin>>n>>m;
vector<set<int> > dp(n + 1);
dp.insert(0);
dp.insert(2);
dp.insert(5);
wastedWire = INT_MAX;
for(int i = 3; i <= n; ++i)
{
if(DEBUG)
cout<<"For "<<i<<" slots"<<endl;
int limit = GIF(i/2.0);
for(int j = 1; j <= limit; ++j)
{
tmp = j + (i - j) + 1;
for(set<int>::iterator k = dp[j - 1].begin(); k != dp[j - 1].end(); ++k)
{
for(set<int>::iterator l = dp[i - j].begin(); l != dp[i - j].end(); ++l)
{
if(DEBUG)
cout<<(tmp + *k + *l)<<endl;
dp[i].insert(tmp + *k + *l);
}
}
}
}
for(set<int>::iterator i = dp[n].begin(); i != dp[n].end(); ++i)
{
if(wastedWire > (m - *i))
wastedWire = m - *i;
}
if(wastedWire >= 0)
cout<<wastedWire<<endl;
else
cout<<-1<<endl;
}
}
``````

This solution is wrong and I can’t figure out why. Can anyone help or point me in the right direction? Any help is appreciated because I’ve already pushed myself quite a bit to solve this problem and I can’t think anymore //