#pragma GCC target("avx2") #pragma GCC optimize("Ofast") #pragma GCC optimize("unroll-loops") #include using namespace std; typedef struct{ int b; int m; int e; }pendulum; int getpos(int tim,pendulum &p){ int b=p.b; int m=p.m; int e=p.e; int mg=(b-m)/e; long long st=0,fi=2e9; while(st<=fi){ long long te=(st+fi)/2; long long val; if(te<=mg){ long long fir=b; long long las=b-te*e; val=(fir+las); val*=(te+1); } else{ long long fir=b; long long las=b-mg*e; val=(fir+las); val*=(mg+1); long long add=m; add*=(te-mg); add*=2; val+=add; } if(val=0){ if(subt<=mg){ long long fir=b; long long las=b-subt*e; val=(fir+las); val*=(subt+1); } else{ long long fir=b; long long las=b-mg*e; val=(fir+las); val*=(mg+1); long long add=m; add*=(subt-mg); add*=2; val+=add; } } long long jud=tim-val; long long len; if(st<=mg){len=b-st*e;} else{len=m;} long long ce=1; if(st%2){ce=-1;} if(jud<=len){return ce*jud;} else{return ce*(2*len-jud);} } int n,k; vector t,u; long long eval(vector &sol,bool debug){ // tairitsu double t_all=0.0; for(auto &nx : t){ double t_cur=0.0; vector x; for(auto &ny : sol){ x.push_back(getpos(nx,ny)); } for(int i=0;i x; for(auto &ny : sol){ x.push_back(getpos(nx,ny)); } for(int i=0;i> n >> k; t.resize(k); u.resize(k); for(auto &nx : t){cin >> nx;} for(auto &nx : u){cin >> nx;} vector ans; vector plis; for(int b=1;b<=80;b++){ // for(int m=1;m<=b;m++){ for(int m=b;m<=b;m++){ for(int e=1;e<=max(1,b-m);e++){ plis.push_back({b,m,e}); } } } long long maxsc=-1; vector res; for(int i=0;i cres; for(int k=0;k