# Paying Up, answer is wrong

All kinds of test cases are giving the right output but when i submit it , it always shows “wrong answer”

can anyone tell me whats wrong??

``````#include <algorithm>
#include <iostream>
#include <cstdio>
using namespace std;

#define gc getchar_unlocked

void scanint(int &x)

{
register int c=gc();
x=0;
for(;(c<48||c>57);
c=gc());
for(;c>47&&c<58;c=gc())
{
x=(x<<1)+(x<<3)+c- 48;
}
}

int main()

{
int t,n,m,sum,j,i;

int notes[20];
scanint(t);
while(t--)
{
scanint(n);
scanint(m);

for(i=0;i<n;i++)
{
scanint(notes[i]);

}
sort(notes,notes+n);

for(i=0;i<n;i++)
{   sum=notes[i];
for(j=0;j<n;j++)
{
if(sum<m)
{
sum=sum+notes[j];
if(sum>m)
sum=sum-notes[j];
}
}

for(j=0;j<i;j++)
{
if(sum<m)
sum=sum+notes[j];
if(sum>m)
sum=sum-notes[j];

}
if (sum==m)
break;
}
if(sum==m)
printf("Yes\n");
else
printf("No\n");
}
return 0;
}``````

It returns no for

``````1
4 13
1
2
4
8
``````

but 1+4+8 = 13

2 Likes

i rectified the code, its yet showing wrong answer

#include
#include
using namespace std;

#define gc getchar_unlocked

void scanint(int &x)

{
register int c=gc();
x=0;
for(;(c<48||c>57);
c=gc());
for(;c>47&&c<58;c=gc())
{
x=(x<<1)+(x<<3)+c- 48;
}
}

int main()

{
int t,n,m,sum,j,i;

`````` int notes[20];
scanint(t);
while(t--)
{
scanint(n);
scanint(m);

for(i=0;i<n;i++)
{
scanint(notes[i]);

}

for(i=0;i<n;i++)
{   sum=notes[i];
for(j=i+1;j<n;j++)
{
if(sum<m)
{
sum=sum+notes[j];
if(sum>m)
sum=sum-notes[j];
}
}

for(j=0;j<i;j++)
{
if(sum<m)
{sum=sum+notes[j];
if(sum>m)
sum=sum-notes[j];
}

}
if (sum==m)
break;
}
if(sum==m)
printf("Yes\n");
else
printf("No\n");
}
return 0;
``````

}

thanks a lot!! that really helps