| ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
|---|---|---|---|---|---|---|---|---|---|
| #650048 | #750. 【UNR #6】小火车 | Cry_For_theMoon | 100 | 35430ms | 36240kb | C++ 14 | 2.1kb | 2023-08-16 11:41:30 | 2023-08-16 11:41:31 |
answer
#include<bits/stdc++.h>
#define rep(i,a,b) for(int i=(a);i<=(b);i++)
#define per(i,a,b) for(int i=(a);i>=(b);i--)
#define op(x) ((x&1)?x+1:x-1)
#define odd(x) (x&1)
#define even(x) (!odd(x))
#define lc(x) (x<<1)
#define rc(x) (lc(x)|1)
#define lowbit(x) (x&-x)
#define mp(x,y) make_pair(x,y)
typedef long long ll;
typedef unsigned long long ull;
typedef double db;
using namespace std;
const int MAXN = 40,MAXM = 20;
ll n,m,p,a[MAXN];
typedef array<ll,2> pr; //(val,mask)
pr L[(1<<MAXM)+10],R[(1<<MAXM)+10];
typedef array<ll,3> tr;
int x,y;
tr qry(ll l,ll r){
ll ra = -1,rb = -1,cnt = 0;
auto add = [&](ll mask){
//printf("add %lld\n",mask);
if(ra == -1)ra = mask;
else rb = mask;
};
//a+b in [l,r]
for(int i=1,pl=y,pr=y;i<=x;i++){
while(pl && L[i][0] + R[pl][0] >= l)pl--;
while(pr && L[i][0] + R[pr][0] > r)pr--;
rep(j,pl+1,pr){
ll mask = L[i][1] + (R[j][1] << m);
add(mask);
if(rb != -1)break;
}
cnt += max(0,pr-pl);
}
//a+b in [l+p,r+p]
for(int i=1,pl=y,pr=y;i<=x;i++){
while(pl && L[i][0] + R[pl][0] >= l+p)pl--;
while(pr && L[i][0] + R[pr][0] > r+p)pr--;
rep(j,pl+1,pr){
ll mask = L[i][1] + (R[j][1] << m);
add(mask);
if(rb != -1)break;
}
cnt += max(0,pr-pl);
}
assert(ra != -1);
return {ra,rb,cnt};
}
ll ans[MAXN];
int main(){
cin>>n>>p;
rep(i,0,n-1)cin>>a[i];
if(n==1){
cout<<"1";
exit(0);
}
m = n/2; //[0,m) and [m,n)
rep(mask,0,(1<<m)-1){
ll sum = 0;
rep(j,0,m-1)if(mask>>j&1)sum = (sum + a[j])%p;
L[++x] = {sum,mask};
}
rep(mask,0,(1<<(n-m))-1){
ll sum = 0;
rep(j,0,n-m-1)if(mask>>j&1)sum = (sum + a[m+j])%p;
R[++y] = {sum,mask};
}
sort(L+1,L+1+x);
sort(R+1,R+1+y);
ll L = 0,R = p-1;
while(L<R){
ll mid = (L+R)>>1;
ll cnt = qry(L,mid)[2];
if(cnt > mid-L+1){
R = mid;
}else{
L = mid+1;
}
}
tr res = qry(L,L);
assert(res[0] != -1 && res[1] != -1);
rep(i,0,n-1)if(res[0]>>i&1)ans[i]++;
rep(i,0,n-1)if(res[1]>>i&1)ans[i]--;
rep(i,0,n-1)cout<<ans[i]<<" ";
return 0;
}
这程序好像有点Bug,我给组数据试试?
详细
小提示:点击横条可展开更详细的信息
Subtask #1:
score: 20
Accepted
total time: 10ms
memory: 3484kb
Test #1:
score: 20
Accepted
time: 1ms
memory: 3484kb
input:
15 32767 32014 29755 20719 7668 31261 4190 15336 16007 8671 8380 3834 17342 30850 26743 2095
output:
-1 -1 -1 -1 -1 1 -1 -1 -1 1 -1 -1 1 -1 1
result:
ok
Test #2:
score: 0
Accepted
time: 1ms
memory: 3444kb
input:
15 32767 17111 21127 7828 9487 8681 2910 26947 31312 2295 15405 10362 1957 28853 20724 13793
output:
-1 -1 0 -1 0 0 -1 -1 1 0 -1 1 0 0 1
result:
ok
Test #3:
score: 0
Accepted
time: 1ms
memory: 3484kb
input:
15 32767 233 28386 17524 2281 8762 11740 14193 2102 29038 4562 14519 14916 29832 7458 9287
output:
0 0 0 0 0 0 0 -1 -1 -1 0 0 -1 0 0
result:
ok
Test #4:
score: 0
Accepted
time: 1ms
memory: 3376kb
input:
15 32767 30162 23080 26786 11962 29882 17826 27557 26997 13393 15081 23924 6146 22347 23854 20840
output:
-1 0 0 0 -1 1 -1 -1 0 -1 0 1 -1 -1 1
result:
ok
Test #5:
score: 0
Accepted
time: 1ms
memory: 3436kb
input:
15 32767 3271 19569 26225 26168 26396 29080 25393 13084 14748 12742 728 20089 18227 29132 25484
output:
0 1 0 0 0 0 0 0 -1 0 1 -1 -1 0 0
result:
ok
Test #6:
score: 0
Accepted
time: 1ms
memory: 3388kb
input:
15 32767 8930 20955 2953 18286 28113 25157 28302 14907 28962 30440 23624 23459 7398 11354 26861
output:
1 1 0 0 1 -1 1 -1 0 0 -1 1 -1 0 1
result:
ok
Test #7:
score: 0
Accepted
time: 1ms
memory: 3356kb
input:
15 32767 23035 14339 4866 23967 2433 1100 550 15167 15503 27310 8123 16246 28367 30567 20445
output:
0 1 1 0 0 1 0 1 -1 0 -1 -1 -1 0 0
result:
ok
Test #8:
score: 0
Accepted
time: 1ms
memory: 3388kb
input:
15 32767 30812 21722 10861 10953 1655 5878 32586 5465 9941 13994 22090 21860 4779 19116 6997
output:
0 0 0 0 0 -1 0 0 0 -1 1 0 1 0 -1
result:
ok
Test #9:
score: 0
Accepted
time: 1ms
memory: 3376kb
input:
15 32767 27695 28510 3302 12732 1447 31908 8482 12697 4862 27702 16031 18524 26772 10633 31145
output:
0 -1 0 0 0 0 0 0 1 0 1 0 -1 0 -1
result:
ok
Test #10:
score: 0
Accepted
time: 1ms
memory: 3364kb
input:
15 23869 1225 22519 11819 13062 3649 2271 7869 1529 11521 2130 12776 16407 14654 10619 19255
output:
1 0 0 1 1 0 0 -1 0 0 0 -1 0 0 0
result:
ok
Subtask #2:
score: 20
Accepted
total time: 8ms
memory: 3488kb
Test #11:
score: 20
Accepted
time: 1ms
memory: 3392kb
input:
20 1048575 564181 173924 775561 820558 961613 705758 136507 410279 242197 889001 43481 685634 645386...
output:
-1 1 -1 1 -1 -1 1 1 1 1 1 1 1 -1 -1 1 1 1 1 1
result:
ok
Test #12:
score: 0
Accepted
time: 1ms
memory: 3468kb
input:
20 1048575 164957 198949 599344 37459 424813 340114 973657 543017 650677 795796 680228 600452 609316...
output:
-1 0 0 -1 0 0 0 0 -1 1 -1 1 0 1 1 1 0 0 0 1
result:
ok
Test #13:
score: 0
Accepted
time: 1ms
memory: 3468kb
input:
20 1048575 813184 214022 521111 769948 641983 916709 263732 65933 50824 577793 1035869 101648 192487...
output:
0 1 1 1 1 -1 0 0 -1 1 1 -1 0 0 0 1 1 -1 -1 -1
result:
ok
Test #14:
score: 0
Accepted
time: 1ms
memory: 3400kb
input:
20 1048575 844138 173629 586921 677063 367661 626506 862819 923308 701317 92878 735322 694516 230827...
output:
-1 1 1 0 -1 1 0 -1 -1 0 -1 1 -1 -1 0 1 -1 1 1 0
result:
ok
Test #15:
score: 0
Accepted
time: 1ms
memory: 3464kb
input:
20 1048575 268568 269816 1022878 761593 511439 474611 452542 134284 842999 997181 33571 143491 50750...
output:
0 -1 -1 -1 0 0 1 0 0 0 -1 0 0 1 0 0 0 0 1 0
result:
ok
Test #16:
score: 0
Accepted
time: 1ms
memory: 3392kb
input:
20 1048575 680074 354269 515414 283952 743266 311573 977587 174466 480671 87233 850858 653141 103082...
output:
1 0 -1 -1 0 -1 0 0 0 0 0 1 -1 0 0 0 0 0 0 -1
result:
ok
Test #17:
score: 0
Accepted
time: 0ms
memory: 3392kb
input:
20 1048575 611362 977749 742894 270997 1013162 718682 348298 879293 710011 481967 874426 506581 3519...
output:
1 0 0 0 0 0 0 1 1 1 1 -1 1 0 -1 -1 0 -1 -1 1
result:
ok
Test #18:
score: 0
Accepted
time: 0ms
memory: 3428kb
input:
20 1048575 793652 897637 602861 103687 301876 664793 314294 417202 767564 603752 317858 889646 85668...
output:
1 -1 1 0 -1 1 1 1 -1 0 -1 0 -1 0 -1 1 0 1 -1 0
result:
ok
Test #19:
score: 0
Accepted
time: 1ms
memory: 3324kb
input:
20 1048575 723913 13015 261644 113553 162325 393331 327668 643147 436055 962262 870594 1020796 50563...
output:
0 -1 0 1 -1 1 1 0 0 -1 0 0 1 0 1 -1 1 0 -1 -1
result:
ok
Test #20:
score: 0
Accepted
time: 1ms
memory: 3488kb
input:
20 345610 160327 330346 310103 172961 102527 119742 31402 280595 124514 11689 102900 257956 294388 2...
output:
0 -1 0 0 0 -1 0 0 0 0 0 0 -1 0 -1 -1 -1 0 0 -1
result:
ok
Subtask #3:
score: 20
Accepted
total time: 1484ms
memory: 11640kb
Test #21:
score: 20
Accepted
time: 294ms
memory: 11556kb
input:
36 68719476735 8192421667 51149053040 39112633235 24879277471 25450137171 33635199054 15502186378 15...
output:
0 -1 0 1 1 0 0 0 1 1 -1 -1 1 -1 1 0 -1 1 -1 -1 -1 0 0 -1 -1 0 0 1 0 0 0 1 1 -1 1 0
result:
ok
Test #22:
score: 0
Accepted
time: 299ms
memory: 11552kb
input:
36 68719476735 57264797044 65622980792 19214399229 34484083431 17363298458 3010377807 11975833361 50...
output:
0 1 -1 1 -1 1 0 -1 0 -1 -1 0 -1 0 0 0 0 -1 0 0 0 0 0 -1 0 1 0 1 -1 0 -1 0 0 1 -1 1
result:
ok
Test #23:
score: 0
Accepted
time: 295ms
memory: 11484kb
input:
36 68719476735 60410405069 48545194888 51250850407 64509639515 23536012825 46776176922 6036236054 61...
output:
1 0 0 -1 0 0 -1 0 -1 0 1 0 -1 0 -1 0 0 0 0 0 1 -1 1 0 1 0 0 1 0 0 0 1 -1 0 1 0
result:
ok
Test #24:
score: 0
Accepted
time: 300ms
memory: 11620kb
input:
36 68719476735 54412684975 35163749063 67213968182 50133693508 39573341818 1702174868 18150260382 48...
output:
0 0 -1 0 -1 0 1 0 0 -1 0 -1 0 0 0 1 0 1 1 -1 1 1 0 -1 0 0 1 -1 -1 -1 -1 -1 1 0 1 1
result:
ok
Test #25:
score: 0
Accepted
time: 296ms
memory: 11640kb
input:
36 60934165625 32804472007 26897296013 30488480303 20419148761 10216675572 48813912353 55380068102 6...
output:
1 0 1 0 0 -1 0 0 0 1 -1 -1 0 0 0 0 0 0 -1 1 -1 0 1 -1 0 -1 0 0 -1 0 0 0 1 -1 0 0
result:
ok
Subtask #4:
score: 40
Accepted
total time: 33928ms
memory: 36240kb
Test #26:
score: 40
Accepted
time: 1349ms
memory: 36232kb
input:
40 1099511627775 34582838498 1045960865072 992410102369 772072667122 1092372423614 130745108134 1856...
output:
-1 -1 -1 1 1 -1 1 1 1 -1 1 1 -1 -1 1 1 1 -1 1 -1 1 1 1 1 -1 -1 1 1 -1 1 -1 1 -1 -1 1 1 -1 -1 -1 -1
result:
ok
Test #27:
score: 0
Accepted
time: 1345ms
memory: 36232kb
input:
40 1099511627775 200872975621 697765676533 774415476926 997128021938 558940758895 933955418899 92143...
output:
0 0 1 0 -1 0 0 0 0 0 1 0 0 0 1 0 0 0 1 0 1 0 0 0 0 -1 0 -1 0 0 0 1 1 1 0 0 0 -1 1 -1
result:
ok
Test #28:
score: 0
Accepted
time: 1341ms
memory: 36132kb
input:
40 1099511627775 1089825943781 893655875192 420034084192 140255923457 1009368588251 721144316192 259...
output:
-1 0 0 1 -1 -1 1 -1 -1 1 0 0 -1 0 0 0 1 -1 1 0 0 -1 0 -1 1 0 0 0 1 -1 0 -1 1 -1 0 0 0 1 -1 -1
result:
ok
Test #29:
score: 0
Accepted
time: 1337ms
memory: 36192kb
input:
40 1099511627775 317119094176 374022242599 675858995716 595098900461 184364977838 368729955676 50897...
output:
-1 -1 0 0 0 1 -1 0 1 -1 1 1 0 0 -1 1 -1 0 0 1 -1 1 0 -1 0 0 1 1 1 1 0 0 0 0 0 0 1 -1 0 0
result:
ok
Test #30:
score: 0
Accepted
time: 1372ms
memory: 36188kb
input:
40 1099511627775 592386363451 541764655147 264665958257 820638141461 912711765863 1035582357851 4769...
output:
0 -1 0 0 0 0 0 -1 0 0 -1 -1 1 0 -1 0 0 0 1 0 0 0 -1 0 0 0 -1 0 1 0 1 0 -1 0 -1 0 0 0 0 0
result:
ok
Test #31:
score: 0
Accepted
time: 1369ms
memory: 36124kb
input:
40 1099511627775 104362198981 580763969459 1011981622496 851446383203 969824713196 505990811248 4105...
output:
-1 -1 0 -1 0 1 1 1 1 0 1 0 0 1 0 -1 -1 0 0 1 0 0 -1 -1 0 1 1 1 1 1 1 0 0 0 1 0 0 0 1 1
result:
ok
Test #32:
score: 0
Accepted
time: 1341ms
memory: 36228kb
input:
40 1099511627775 903606864929 664352310707 974316721981 891083453269 1063195719004 808984357607 1036...
output:
0 0 0 -1 0 -1 0 0 0 0 -1 0 1 0 0 0 0 1 0 1 0 -1 1 0 0 0 -1 1 0 0 1 0 -1 -1 0 0 0 -1 0 1
result:
ok
Test #33:
score: 0
Accepted
time: 1359ms
memory: 36212kb
input:
40 1099511627775 23582097052 1005183239567 540316559085 880993501886 268905577882 689769044222 24070...
output:
1 -1 0 -1 -1 0 0 -1 -1 1 -1 0 -1 0 0 1 0 1 0 0 0 1 0 0 0 0 1 0 -1 1 -1 1 -1 0 -1 0 1 0 0 -1
result:
ok
Test #34:
score: 0
Accepted
time: 1331ms
memory: 36240kb
input:
40 1099511627775 269160056618 538320113236 617045828042 459035797436 623547988756 790988713754 18297...
output:
0 0 1 1 0 0 1 0 1 -1 -1 0 0 -1 0 0 1 1 0 0 0 1 1 0 -1 0 0 0 0 1 1 0 0 1 1 1 1 -1 -1 -1
result:
ok
Test #35:
score: 0
Accepted
time: 1328ms
memory: 36148kb
input:
40 1099511627775 884656633679 568413717293 226004433343 502458718799 881134829167 1004917437598 4520...
output:
1 -1 1 1 -1 1 0 1 0 -1 -1 0 0 0 0 0 0 0 1 0 1 1 0 -1 -1 1 -1 1 0 -1 1 -1 -1 -1 1 -1 0 0 1 0
result:
ok
Test #36:
score: 0
Accepted
time: 1380ms
memory: 36144kb
input:
40 1099511627775 458617235764 734957315281 450259545938 870203009893 463598688181 857779811434 78881...
output:
-1 0 0 0 0 1 -1 -1 -1 1 0 0 1 -1 0 0 0 0 0 0 0 0 0 0 -1 0 0 0 1 0 -1 0 1 -1 0 0 -1 -1 1 0
result:
ok
Test #37:
score: 0
Accepted
time: 1374ms
memory: 36204kb
input:
40 1099511627775 481597323346 922477348867 395104787464 788199663064 354068557816 708137115632 52762...
output:
1 0 -1 0 0 0 -1 0 -1 1 -1 -1 0 1 -1 0 1 0 1 0 0 0 0 1 1 0 0 0 0 0 -1 1 -1 0 0 1 0 1 -1 0
result:
ok
Test #38:
score: 0
Accepted
time: 1343ms
memory: 36156kb
input:
40 1099511627775 372359631286 626995238342 663922290404 998809712018 383032810283 490922994967 35823...
output:
0 -1 1 0 0 1 0 0 1 0 -1 1 0 0 -1 0 0 0 0 -1 -1 1 0 1 0 0 0 0 1 1 -1 -1 0 0 1 0 1 0 1 1
result:
ok
Test #39:
score: 0
Accepted
time: 1399ms
memory: 36232kb
input:
40 1099511627775 380775691717 1006780980397 638058344608 426273572040 545791968589 207779873622 9137...
output:
-1 0 0 1 0 0 0 -1 0 0 0 0 1 0 0 0 0 0 0 -1 0 0 -1 0 1 0 -1 0 -1 -1 -1 0 0 1 0 1 0 1 0 1
result:
ok
Test #40:
score: 0
Accepted
time: 1390ms
memory: 36188kb
input:
40 893003785191 688393354592 86638261984 674867487957 392067041443 451529276781 232273102534 9975309...
output:
0 -1 -1 0 0 -1 0 0 0 0 -1 0 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 -1 0 -1 0 -1 -1 -1 -1 -1 0 -1 0 0 0 0 0 0 0
result:
ok
Test #41:
score: 0
Accepted
time: 1364ms
memory: 36232kb
input:
40 1099511627775 719866795061 108013482646 1041900316186 419067703081 173599045327 868033482163 6287...
output:
1 -1 0 -1 0 0 -1 -1 1 0 -1 1 0 -1 0 1 0 1 0 0 1 1 1 1 0 1 -1 0 1 -1 0 0 0 -1 0 1 -1 1 0 -1
result:
ok
Test #42:
score: 0
Accepted
time: 1398ms
memory: 36200kb
input:
40 1099511627775 545867738489 708887826302 1064788086812 93133464328 745067714624 577688289106 23283...
output:
0 0 -1 0 0 0 0 0 1 0 0 0 -1 0 0 0 0 1 1 0 0 0 1 1 -1 0 0 -1 1 -1 1 0 0 -1 0 0 0 -1 0 -1
result:
ok
Test #43:
score: 0
Accepted
time: 1323ms
memory: 36116kb
input:
40 1099511627775 12718811461 174489256757 170076597236 1044404600452 25437622922 803109201494 340153...
output:
1 1 -1 0 1 -1 -1 1 1 1 0 1 -1 -1 1 1 1 -1 1 1 1 -1 1 1 0 0 1 0 -1 1 1 1 -1 -1 1 0 0 -1 -1 1
result:
ok
Test #44:
score: 0
Accepted
time: 1363ms
memory: 36156kb
input:
40 1099511627775 340935262342 571052784589 1008444349193 36053587252 433625314312 417641103091 72107...
output:
0 -1 0 1 1 1 0 -1 0 1 1 -1 0 1 1 -1 1 1 -1 0 1 1 0 -1 0 0 0 -1 -1 0 0 0 0 0 1 -1 1 1 -1 0
result:
ok
Test #45:
score: 0
Accepted
time: 1330ms
memory: 36052kb
input:
40 1099511627772 344972156246 267020585482 113490740698 504008624069 560753994418 308255480129 97379...
output:
0 -1 0 -1 0 0 -1 -1 0 0 0 -1 1 1 0 1 -1 -1 0 1 0 0 -1 0 0 -1 0 1 0 1 0 1 1 1 -1 -1 -1 0 0 -1
result:
ok
Test #46:
score: 0
Accepted
time: 1327ms
memory: 36232kb
input:
40 1099511627771 993350889206 696089931608 956456772706 212321477138 310641620711 506250193162 25312...
output:
0 -1 1 -1 -1 -1 0 0 0 0 1 1 0 -1 0 0 -1 1 0 0 0 1 0 -1 -1 1 0 1 0 0 -1 -1 1 1 -1 0 1 1 -1 1
result:
ok
Test #47:
score: 0
Accepted
time: 1321ms
memory: 36056kb
input:
40 1099511627769 1078397308358 537102056213 50615030698 503609629826 1057282988941 101230061396 6261...
output:
-1 0 0 -1 1 0 -1 0 -1 1 0 0 -1 1 0 1 -1 1 0 1 1 1 1 -1 -1 -1 -1 -1 0 -1 -1 0 0 -1 -1 0 1 0 -1 1
result:
ok
Test #48:
score: 0
Accepted
time: 1405ms
memory: 36156kb
input:
40 1099511627775 32588024866 450157339046 1062972581516 584624740144 260704198928 557902820104 56694...
output:
1 1 0 0 1 1 -1 0 0 -1 0 0 0 1 0 -1 1 0 1 0 1 -1 1 1 0 1 1 1 1 -1 0 -1 0 0 -1 0 -1 1 0 0
result:
ok
Test #49:
score: 0
Accepted
time: 1354ms
memory: 36152kb
input:
40 1099511627765 451752441053 658813147694 315484645099 770105053928 599791310006 192526263482 87245...
output:
-1 1 -1 0 1 1 0 -1 1 0 -1 0 1 0 1 0 -1 0 0 0 -1 -1 -1 0 0 0 -1 1 -1 1 -1 -1 1 0 0 0 0 0 1 0
result:
ok
Test #50:
score: 0
Accepted
time: 1385ms
memory: 36156kb
input:
40 1099511627775 59284320584 108188359673 480573178397 150962498431 176122606558 1063176400492 83371...
output:
0 0 0 0 0 1 -1 0 0 0 0 1 0 -1 0 0 -1 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 -1
result:
ok
Extra Test:
score: 0
Extra Test Passed

鄂公网安备 42010202000505 号