#include <bits/stdc++.h>
using namespace std;
#define int long long
#define endl '\n'
#define st first
#define nd second
#define pb push_back
#define sz(x) (int)(x).size()
#define all(x) (x).begin(), (x).end()
#define ll long long
ll mod=1000000007;
int inf=1000000007;
ll infl=1000000000000000007;
const int M=307;
ll a[2*M];
ll b[2*M];
int DP[M*M*4];
int nDP[M*M*4];
void gg()
{
cout<<"impossible";
exit(0);
}
signed main()
{
ios_base::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
// freopen("in.txt","r",stdin);
clock_t t = clock();
int m;
ll l,sum=0,ans=0,act=0;
cin>>m>>l;
for(ll i=-m;i<=m;i++)
{
cin>>a[i+m];
sum+=a[i+m]*i;
}
ans+=a[m];
a[m]=0;
if(sum>=l)
{
for(ll i=-m;i<=m;i++)
{
ll x;
if(i<=0) x=a[i+m];
else x=min(a[i+m],(l-act)/i);
b[-i+m]+=x;
a[i+m]-=x;
ans+=x;
act+=i*x;
}
}
else
{
for(ll i=m;i>=-m;i--)
{
ll x;
if(i>=0) x=a[i+m];
else x=min(a[i+m],(l-act)/i);
b[-i+m]+=x;
a[i+m]-=x;
ans+=x;
act+=x*i;
}
}
for(int i=-2*m*m;i<=2*m*m;i++) DP[i+2*m*m]=-infl;
DP[2*m*m]=0;
for(int i=1;i<=m;i++)
{
for(int j=-2*m*m;j<=2*m*m;j++) nDP[j+2*m*m]=DP[j+2*m*m];
for(int l=-2*m*m;l<-2*m*m+i;l++)
{
deque<pair<int,int>>Q;
int c=0;
if(a[i+m]>0)
{
for(int j=l; j<=2*m*m; j+=i)
{
c++;
while(sz(Q)>0&&Q[0].nd<c-a[i+m]) Q.pop_front();
while(sz(Q)>0&&Q.back().st<DP[j+2*m*m]-c) Q.pop_back();
Q.pb({DP[j+2*m*m]-c,c});
if(sz(Q)>0) nDP[j+2*m*m]=max(nDP[j+2*m*m],Q[0].st+c);
}
}
Q.clear();
c=0;
if(b[i+m]>0)
{
for(int j=l; j<=2*m*m; j+=i)
{
c++;
while(sz(Q)>0&&Q[0].nd<c-b[i+m]) Q.pop_front();
if(c>a[i+m])
{
while(sz(Q)>0&&Q.back().st<DP[j-a[i+m]*i+2*m*m]+c) Q.pop_back();
Q.pb({DP[j-a[i+m]*i+2*m*m]+c,c});
}
if(sz(Q)>0) nDP[j+2*m*m]=max(nDP[j+2*m*m],Q[0].st+(int)a[i+m]-c);
}
}
}
for(int j=-2*m*m;j<=2*m*m;j++) DP[j+2*m*m]=nDP[j+2*m*m];
}
for(int i=1;i<=m;i++)
{
for(int j=-2*m*m;j<=2*m*m;j++) nDP[j+2*m*m]=DP[j+2*m*m];
for(int l=2*m*m;l>2*m*m-i;l--)
{
deque<pair<int,int>>Q;
int c=0;
if(a[-i+m]>0)
{
for(int j=l; j>=-2*m*m; j-=i)
{
c++;
while(sz(Q)>0&&Q[0].nd<c-a[-i+m]) Q.pop_front();
while(sz(Q)>0&&Q.back().st<DP[j+2*m*m]-c) Q.pop_back();
Q.pb({DP[j+2*m*m]-c,c});
if(sz(Q)>0) nDP[j+2*m*m]=max(nDP[j+2*m*m],Q[0].st+c);
}
}
Q.clear();
c=0;
if(b[-i+m]>0)
{
for(int j=l; j>=-2*m*m; j-=i)
{
c++;
while(sz(Q)>0&&Q[0].nd<c-b[-i+m]) Q.pop_front();
if(c>a[-i+m])
{
while(sz(Q)>0&&Q.back().st<DP[j+a[-i+m]*i+2*m*m]+c) Q.pop_back();
Q.pb({DP[j+a[-i+m]*i+2*m*m]+c,c});
}
if(sz(Q)>0) nDP[j+2*m*m]=max(nDP[j+2*m*m],Q[0].st+(int)a[-i+m]-c);
}
}
}
for(int j=-2*m*m;j<=2*m*m;j++) DP[j+2*m*m]=nDP[j+2*m*m];
}
l-=act;
t = clock() - t;
// printf ("It took me %d clicks (%f seconds).\n",t,((float)t)/CLOCKS_PER_SEC);
if(l<-2*m*m||l>2*m*m) gg();
else
{
if(DP[l+2*m*m]<-infl/2) gg();
cout<<ans+(ll)DP[l+2*m*m];
}
return 0;
}
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Incorrect |
18 ms |
468 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Incorrect |
18 ms |
468 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
3 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
4 ms |
340 KB |
Output is correct |
5 |
Correct |
5 ms |
340 KB |
Output is correct |
6 |
Correct |
3 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
2 ms |
340 KB |
Output is correct |
9 |
Correct |
2 ms |
340 KB |
Output is correct |
10 |
Correct |
2 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
3 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
4 ms |
340 KB |
Output is correct |
5 |
Correct |
5 ms |
340 KB |
Output is correct |
6 |
Correct |
3 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
2 ms |
340 KB |
Output is correct |
9 |
Correct |
2 ms |
340 KB |
Output is correct |
10 |
Correct |
2 ms |
340 KB |
Output is correct |
11 |
Correct |
0 ms |
340 KB |
Output is correct |
12 |
Correct |
1 ms |
212 KB |
Output is correct |
13 |
Correct |
0 ms |
212 KB |
Output is correct |
14 |
Correct |
1 ms |
340 KB |
Output is correct |
15 |
Correct |
3 ms |
340 KB |
Output is correct |
16 |
Correct |
1 ms |
340 KB |
Output is correct |
17 |
Correct |
3 ms |
340 KB |
Output is correct |
18 |
Correct |
3 ms |
340 KB |
Output is correct |
19 |
Correct |
2 ms |
340 KB |
Output is correct |
20 |
Correct |
1 ms |
340 KB |
Output is correct |
21 |
Correct |
2 ms |
340 KB |
Output is correct |
22 |
Correct |
2 ms |
340 KB |
Output is correct |
23 |
Correct |
2 ms |
340 KB |
Output is correct |
24 |
Correct |
6 ms |
340 KB |
Output is correct |
25 |
Correct |
2 ms |
340 KB |
Output is correct |
26 |
Correct |
4 ms |
340 KB |
Output is correct |
27 |
Correct |
4 ms |
340 KB |
Output is correct |
28 |
Correct |
5 ms |
340 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
3 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
4 ms |
340 KB |
Output is correct |
5 |
Correct |
5 ms |
340 KB |
Output is correct |
6 |
Correct |
3 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
2 ms |
340 KB |
Output is correct |
9 |
Correct |
2 ms |
340 KB |
Output is correct |
10 |
Correct |
2 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
3 ms |
340 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
3 ms |
340 KB |
Output is correct |
15 |
Correct |
3 ms |
340 KB |
Output is correct |
16 |
Correct |
3 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
2 ms |
340 KB |
Output is correct |
20 |
Correct |
2 ms |
400 KB |
Output is correct |
21 |
Correct |
2 ms |
468 KB |
Output is correct |
22 |
Correct |
2 ms |
468 KB |
Output is correct |
23 |
Correct |
10 ms |
504 KB |
Output is correct |
24 |
Correct |
5 ms |
468 KB |
Output is correct |
25 |
Correct |
11 ms |
508 KB |
Output is correct |
26 |
Correct |
15 ms |
512 KB |
Output is correct |
27 |
Correct |
12 ms |
544 KB |
Output is correct |
28 |
Correct |
8 ms |
512 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Incorrect |
18 ms |
468 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
3 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
4 ms |
340 KB |
Output is correct |
5 |
Correct |
5 ms |
340 KB |
Output is correct |
6 |
Correct |
3 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
2 ms |
340 KB |
Output is correct |
9 |
Correct |
2 ms |
340 KB |
Output is correct |
10 |
Correct |
2 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
3 ms |
340 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
3 ms |
340 KB |
Output is correct |
15 |
Correct |
3 ms |
340 KB |
Output is correct |
16 |
Correct |
3 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
2 ms |
340 KB |
Output is correct |
20 |
Correct |
2 ms |
400 KB |
Output is correct |
21 |
Correct |
2 ms |
468 KB |
Output is correct |
22 |
Correct |
2 ms |
468 KB |
Output is correct |
23 |
Correct |
10 ms |
504 KB |
Output is correct |
24 |
Correct |
5 ms |
468 KB |
Output is correct |
25 |
Correct |
11 ms |
508 KB |
Output is correct |
26 |
Correct |
15 ms |
512 KB |
Output is correct |
27 |
Correct |
12 ms |
544 KB |
Output is correct |
28 |
Correct |
8 ms |
512 KB |
Output is correct |
29 |
Correct |
1 ms |
340 KB |
Output is correct |
30 |
Correct |
3 ms |
340 KB |
Output is correct |
31 |
Correct |
1 ms |
340 KB |
Output is correct |
32 |
Correct |
2 ms |
340 KB |
Output is correct |
33 |
Correct |
2 ms |
340 KB |
Output is correct |
34 |
Correct |
4 ms |
416 KB |
Output is correct |
35 |
Correct |
1 ms |
340 KB |
Output is correct |
36 |
Correct |
1 ms |
340 KB |
Output is correct |
37 |
Correct |
2 ms |
340 KB |
Output is correct |
38 |
Correct |
2 ms |
340 KB |
Output is correct |
39 |
Correct |
2 ms |
468 KB |
Output is correct |
40 |
Correct |
2 ms |
468 KB |
Output is correct |
41 |
Correct |
10 ms |
512 KB |
Output is correct |
42 |
Correct |
5 ms |
468 KB |
Output is correct |
43 |
Correct |
9 ms |
468 KB |
Output is correct |
44 |
Correct |
10 ms |
468 KB |
Output is correct |
45 |
Correct |
10 ms |
468 KB |
Output is correct |
46 |
Correct |
9 ms |
468 KB |
Output is correct |
47 |
Correct |
8 ms |
968 KB |
Output is correct |
48 |
Correct |
9 ms |
972 KB |
Output is correct |
49 |
Correct |
77 ms |
1032 KB |
Output is correct |
50 |
Correct |
39 ms |
852 KB |
Output is correct |
51 |
Correct |
86 ms |
1060 KB |
Output is correct |
52 |
Correct |
79 ms |
960 KB |
Output is correct |
53 |
Correct |
70 ms |
1108 KB |
Output is correct |
54 |
Correct |
64 ms |
980 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Incorrect |
18 ms |
468 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
3 ms |
340 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
4 ms |
340 KB |
Output is correct |
5 |
Correct |
5 ms |
340 KB |
Output is correct |
6 |
Correct |
3 ms |
340 KB |
Output is correct |
7 |
Correct |
1 ms |
340 KB |
Output is correct |
8 |
Correct |
2 ms |
340 KB |
Output is correct |
9 |
Correct |
2 ms |
340 KB |
Output is correct |
10 |
Correct |
2 ms |
340 KB |
Output is correct |
11 |
Correct |
1 ms |
340 KB |
Output is correct |
12 |
Correct |
3 ms |
340 KB |
Output is correct |
13 |
Correct |
1 ms |
340 KB |
Output is correct |
14 |
Correct |
3 ms |
340 KB |
Output is correct |
15 |
Correct |
3 ms |
340 KB |
Output is correct |
16 |
Correct |
3 ms |
340 KB |
Output is correct |
17 |
Correct |
1 ms |
340 KB |
Output is correct |
18 |
Correct |
1 ms |
340 KB |
Output is correct |
19 |
Correct |
2 ms |
340 KB |
Output is correct |
20 |
Correct |
2 ms |
400 KB |
Output is correct |
21 |
Correct |
2 ms |
468 KB |
Output is correct |
22 |
Correct |
2 ms |
468 KB |
Output is correct |
23 |
Correct |
10 ms |
504 KB |
Output is correct |
24 |
Correct |
5 ms |
468 KB |
Output is correct |
25 |
Correct |
11 ms |
508 KB |
Output is correct |
26 |
Correct |
15 ms |
512 KB |
Output is correct |
27 |
Correct |
12 ms |
544 KB |
Output is correct |
28 |
Correct |
8 ms |
512 KB |
Output is correct |
29 |
Correct |
1 ms |
340 KB |
Output is correct |
30 |
Correct |
3 ms |
340 KB |
Output is correct |
31 |
Correct |
1 ms |
340 KB |
Output is correct |
32 |
Correct |
2 ms |
340 KB |
Output is correct |
33 |
Correct |
2 ms |
340 KB |
Output is correct |
34 |
Correct |
4 ms |
416 KB |
Output is correct |
35 |
Correct |
1 ms |
340 KB |
Output is correct |
36 |
Correct |
1 ms |
340 KB |
Output is correct |
37 |
Correct |
2 ms |
340 KB |
Output is correct |
38 |
Correct |
2 ms |
340 KB |
Output is correct |
39 |
Correct |
2 ms |
468 KB |
Output is correct |
40 |
Correct |
2 ms |
468 KB |
Output is correct |
41 |
Correct |
10 ms |
512 KB |
Output is correct |
42 |
Correct |
5 ms |
468 KB |
Output is correct |
43 |
Correct |
9 ms |
468 KB |
Output is correct |
44 |
Correct |
10 ms |
468 KB |
Output is correct |
45 |
Correct |
10 ms |
468 KB |
Output is correct |
46 |
Correct |
9 ms |
468 KB |
Output is correct |
47 |
Correct |
8 ms |
968 KB |
Output is correct |
48 |
Correct |
9 ms |
972 KB |
Output is correct |
49 |
Correct |
77 ms |
1032 KB |
Output is correct |
50 |
Correct |
39 ms |
852 KB |
Output is correct |
51 |
Correct |
86 ms |
1060 KB |
Output is correct |
52 |
Correct |
79 ms |
960 KB |
Output is correct |
53 |
Correct |
70 ms |
1108 KB |
Output is correct |
54 |
Correct |
64 ms |
980 KB |
Output is correct |
55 |
Correct |
1 ms |
340 KB |
Output is correct |
56 |
Correct |
3 ms |
340 KB |
Output is correct |
57 |
Correct |
2 ms |
340 KB |
Output is correct |
58 |
Correct |
3 ms |
340 KB |
Output is correct |
59 |
Correct |
3 ms |
340 KB |
Output is correct |
60 |
Correct |
4 ms |
340 KB |
Output is correct |
61 |
Correct |
1 ms |
340 KB |
Output is correct |
62 |
Correct |
1 ms |
340 KB |
Output is correct |
63 |
Correct |
2 ms |
340 KB |
Output is correct |
64 |
Correct |
2 ms |
340 KB |
Output is correct |
65 |
Correct |
2 ms |
468 KB |
Output is correct |
66 |
Correct |
2 ms |
468 KB |
Output is correct |
67 |
Correct |
11 ms |
528 KB |
Output is correct |
68 |
Correct |
5 ms |
468 KB |
Output is correct |
69 |
Correct |
10 ms |
468 KB |
Output is correct |
70 |
Correct |
11 ms |
468 KB |
Output is correct |
71 |
Correct |
10 ms |
540 KB |
Output is correct |
72 |
Correct |
8 ms |
516 KB |
Output is correct |
73 |
Correct |
7 ms |
852 KB |
Output is correct |
74 |
Correct |
9 ms |
972 KB |
Output is correct |
75 |
Correct |
90 ms |
1036 KB |
Output is correct |
76 |
Correct |
33 ms |
964 KB |
Output is correct |
77 |
Correct |
72 ms |
1056 KB |
Output is correct |
78 |
Correct |
76 ms |
1088 KB |
Output is correct |
79 |
Correct |
74 ms |
1108 KB |
Output is correct |
80 |
Correct |
64 ms |
1060 KB |
Output is correct |
81 |
Correct |
2104 ms |
6680 KB |
Output is correct |
82 |
Correct |
1043 ms |
6092 KB |
Output is correct |
83 |
Correct |
2313 ms |
6152 KB |
Output is correct |
84 |
Correct |
2234 ms |
6688 KB |
Output is correct |
85 |
Correct |
172 ms |
5948 KB |
Output is correct |
86 |
Correct |
191 ms |
5964 KB |
Output is correct |
87 |
Correct |
1852 ms |
7068 KB |
Output is correct |
# |
Verdict |
Execution time |
Memory |
Grader output |
1 |
Correct |
1 ms |
340 KB |
Output is correct |
2 |
Correct |
0 ms |
212 KB |
Output is correct |
3 |
Correct |
1 ms |
340 KB |
Output is correct |
4 |
Correct |
1 ms |
340 KB |
Output is correct |
5 |
Incorrect |
18 ms |
468 KB |
Output isn't correct |
6 |
Halted |
0 ms |
0 KB |
- |