Can someone please help, what am I doing wrong ? Or on what test cases my solution is failing. It passes 12/19 test cases.
Here is the atcoder question link : LINK
Here is my solution:
Code
Thanks in advance :)
| № | Пользователь | Рейтинг |
|---|---|---|
| 1 | Benq | 3792 |
| 2 | VivaciousAubergine | 3647 |
| 3 | jiangly | 3631 |
| 4 | Kevin114514 | 3574 |
| 5 | maroonrk | 3521 |
| 6 | strapple | 3515 |
| 7 | Radewoosh | 3461 |
| 8 | tourist | 3428 |
| 9 | turmax | 3378 |
| 10 | Um_nik | 3376 |
| Страны | Города | Организации | Всё → |
| № | Пользователь | Вклад |
|---|---|---|
| 1 | Qingyu | 162 |
| 2 | adamant | 148 |
| 3 | Um_nik | 146 |
| 4 | Dominater069 | 143 |
| 5 | errorgorn | 140 |
| 6 | cry | 138 |
| 7 | Proof_by_QED | 136 |
| 8 | YuukiS | 135 |
| 9 | chromate00 | 134 |
| 10 | soullless | 133 |
Can someone please help, what am I doing wrong ? Or on what test cases my solution is failing. It passes 12/19 test cases.
Here is the atcoder question link : LINK
Here is my solution:
ll dp[110][110];
ll mod=998244353;
ll solve(ll i,vector<ll>& a,ll sum,ll chosen)
{
ll n=a.size();
if(i==n)
{
if(chosen==0)
{
return 0;
}
// debug(sum)
if(sum%chosen==0)
return 1;
else
return 0;
}
// cout<<1;
if(dp[i][chosen]!=-1)
return dp[i][chosen]%mod;
return dp[i][chosen]=(solve(i+1,a,sum+a[i],chosen+1)%mod+solve(i+1,a,sum,chosen)%mod)%mod;
}
void solve()
{
ll n;
cin>>n;
vi a(n);
rep(110)
{
for(ll j=0;j<110;j++)
dp[i][j]=-1;
}
rep(n)
cin>>a[i];
cout<< solve(0,a,0,0);
}
Thanks in advance :)
| Название |
|---|



6
4 4 5 7 8 9
Suppose when you are at index 5 (1-based indexing) , elements you picked were: 4 5 ( let's call it way 1) and in another recursive call at index 5 you picked elements 4 7 ( way 2) , now it may be possible that in way 1 you get an integer average value but it may not be possible with way 2
(but your program will return the answer calculated in way 1), because sum of elements differ in both ways.Try to visualize the whole process now and change your code accordingly.
What about adding another state to your dp ?
We can store remainder of elements we picked when divided by number of chosen elements in the third state.
Ohh.. Got it man. You are a saviour. Thanks.
Can't we take another state of 'sum' instead of 'average' ? (integer overflow might be the case or ?)
Sorry my bad, actually we can't take either of them as a state because both of them range from 1 to 1e9 and we can't store that many values even in a 1-D vector.
I edited my previous comment, please read it now. Sorry again