QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#952094#4164. 粟粟的书架The_Shadow_Dragon100 ✓388ms337792kbC++142.5kb2025-03-26 19:38:592025-03-26 19:38:59

Judging History

This is the latest submission verdict.

  • [2025-03-26 19:38:59]
  • Judged
  • Verdict: 100
  • Time: 388ms
  • Memory: 337792kb
  • [2025-03-26 19:38:59]
  • Submitted

answer

#include<bits/stdc++.h>
using namespace std;
#define ll long long 
#define ull unsigned long long
#define sort stable_sort 
#define endl '\n'
const int inf=1000;
int a[210][210],b[500010],sum[210][210][1010],num[210][210][1010];
struct PDS_SMT
{
	int root[500010],rt_sum;
	struct SegmentTree
	{
		int ls,rs,siz,sum;
	}tree[500010<<5];
	#define lson(rt) (tree[rt].ls)
	#define rson(rt) (tree[rt].rs)
	int build_rt()
	{
		rt_sum++;
		lson(rt_sum)=rson(rt_sum)=tree[rt_sum].siz=tree[rt_sum].sum=0;
		return rt_sum;
	}
	void update(int pre,int &rt,int l,int r,int pos)
	{
		rt=build_rt();  tree[rt]=tree[pre];
		tree[rt].siz++;  tree[rt].sum+=pos;
		if(l==r)  return;
		int mid=(l+r)/2;	
		if(pos<=mid)  update(lson(pre),lson(rt),l,mid,pos);
		else  update(rson(pre),rson(rt),mid+1,r,pos);
	}
	int query(int rt1,int rt2,int l,int r,int val)
	{
		if(tree[rt2].sum-tree[rt1].sum<val)  return -1;
		if(l==r)  return ceil(1.0*val/l);
		int mid=(l+r)/2,sum=tree[rson(rt2)].sum-tree[rson(rt1)].sum;
		if(sum>=val)  return query(rson(rt1),rson(rt2),mid+1,r,val);
		return tree[rson(rt2)].siz-tree[rson(rt1)].siz+query(lson(rt1),lson(rt2),l,mid,val-sum);
	}
}T;
int query1(int x1,int y1,int x2,int y2,int k)
{
	return sum[x2][y2][k]-sum[x1-1][y2][k]-sum[x2][y1-1][k]+sum[x1-1][y1-1][k];
}
int query2(int x1,int y1,int x2,int y2,int k)
{
	return num[x2][y2][k]-num[x1-1][y2][k]-num[x2][y1-1][k]+num[x1-1][y1-1][k];
}
int main()
{
// #define Isaac
#ifdef Isaac
	freopen("in.in","r",stdin);
	freopen("out.out","w",stdout);
#endif
	int n,m,q,x1,y1,x2,y2,h,l,r,ans,mid,i,j,k;
	cin>>n>>m>>q;
	if(n==1)
	{
		for(i=1;i<=m;i++) 
		{
			cin>>b[i];  T.update(T.root[i-1],T.root[i],1,inf,b[i]);
		}
		for(i=1;i<=q;i++)
		{
			cin>>x1>>y1>>x2>>y2>>h;
			ans=T.query(T.root[y1-1],T.root[y2],1,inf,h);
			if(ans!=-1)  cout<<ans<<endl;
			else  cout<<"Poor QLW"<<endl;
		}
	}
	else
	{
		for(i=1;i<=n;i++)
		{
			for(j=1;j<=m;j++)
			{
				cin>>a[i][j];
				for(k=1;k<=inf;k++)
				{
					sum[i][j][k]=sum[i-1][j][k]+sum[i][j-1][k]-sum[i-1][j-1][k]+(a[i][j]>=k)*a[i][j];
					num[i][j][k]=num[i-1][j][k]+num[i][j-1][k]-num[i-1][j-1][k]+(a[i][j]>=k);
				}
			}
		}
		for(i=1;i<=q;i++)
		{
			cin>>x1>>y1>>x2>>y2>>h;
			l=1;  r=inf;  ans=-1;
			while(l<=r)
			{
				mid=(l+r)/2;
				if(query1(x1,y1,x2,y2,mid)>=h)
				{
					ans=mid;
					l=mid+1;
				}
				else  r=mid-1;
			}
			if(ans!=-1)  cout<<query2(x1,y1,x2,y2,ans+1)+ceil(1.0*(h-query1(x1,y1,x2,y2,ans+1))/ans)<<endl;
			else  cout<<"Poor QLW"<<endl;
		}
	}
	return 0;
}

詳細信息


Pretests


Final Tests

Test #1:

score: 10
Accepted
time: 0ms
memory: 6860kb

input:

10 10 10
178 938 647 49 871 620 221 816 130 339
894 458 609 18 667 789 355 836 480 57
301 307 130 153 532 865 638 34 534 716
380 836 731 198 681 662 642 529 700 946
727 596 61 226 253 244 344 463 772 109
1 671 864 666 521 740 639 757 313 635
816 511 865 449 826 149 1000 507 663 565
911 195 345 403 5...

output:

9
7
Poor QLW
1
1
2
Poor QLW
10
1
8

result:

ok 10 lines

Test #2:

score: 10
Accepted
time: 250ms
memory: 26832kb

input:

40 40 200000
738 85 470 616 402 329 187 91 293 248 311 534 146 473 831 416 875 686 324 947 215 753 141 846 744 121 803 743 369 957 894 497 862 341 306 90 350 599 509 818
401 903 799 429 322 787 648 190 223 879 294 445 39 107 892 931 922 798 722 744 442 486 564 711 412 744 913 288 872 975 148 378 394...

output:

22
114
62
41
4
67
13
3
1
314
25
83
44
19
205
6
22
55
135
207
Poor QLW
Poor QLW
6
65
39
37
8
9
18
1
28
633
41
27
3
319
Poor QLW
3
25
20
Poor QLW
2
6
12
24
9
78
1
4
214
30
39
216
4
Poor QLW
21
31
240
26
98
Poor QLW
98
84
18
64
39
57
15
12
12
44
96
2
10
Poor QLW
161
44
97
10
106
98
133
1
9
63
Poor QLW
...

result:

ok 200000 lines

Test #3:

score: 10
Accepted
time: 200ms
memory: 254184kb

input:

150 200 100000
853 925 402 238 356 53 754 960 707 213 500 203 386 303 326 271 805 704 143 922 997 661 190 187 478 548 719 799 994 16 918 108 394 505 720 90 246 279 162 885 417 797 479 156 784 254 322 221 860 434 588 650 531 369 214 436 176 915 958 233 706 353 919 511 38 843 938 918 828 35 223 996 16...

output:

Poor QLW
33
Poor QLW
1347
457
378
4151
935
57
3251
4825
27
7381
145
Poor QLW
79
4
353
152
40
Poor QLW
1061
165
549
2377
109
779
203
1018
429
3981
17
175
39
1148
131
15
Poor QLW
677
646
204
Poor QLW
712
78
102
2
364
143
971
14
4269
54
268
1636
1420
549
114
345
Poor QLW
Poor QLW
370
Poor QLW
756
Poor ...

result:

ok 100000 lines

Test #4:

score: 10
Accepted
time: 279ms
memory: 312244kb

input:

200 150 150000
947 154 70 485 232 417 843 888 498 979 938 410 934 454 743 359 796 9 916 933 213 22 389 148 450 351 154 347 412 554 7 254 697 811 519 350 766 612 176 867 3 942 358 225 505 36 413 971 295 701 736 388 152 909 87 930 779 466 837 701 862 764 504 380 679 623 787 321 560 900 184 199 983 977...

output:

437
819
28
490
87
20
Poor QLW
319
254
22
2984
68
Poor QLW
66
2605
300
776
367
69
555
761
132
996
10
91
2057
748
321
107
Poor QLW
2082
393
14
187
1750
226
17
864
1139
3244
1417
1244
39
176
5723
1590
Poor QLW
190
2
1750
123
150
1059
112
294
193
739
419
1140
3
Poor QLW
61
6762
636
290
284
682
468
735
2...

result:

ok 150000 lines

Test #5:

score: 10
Accepted
time: 388ms
memory: 337792kb

input:

200 200 200000
738 155 184 782 307 634 792 402 466 169 720 746 270 507 837 181 896 470 237 229 144 79 71 731 21 729 786 277 855 314 215 528 273 750 482 358 21 479 520 932 634 495 529 565 358 51 90 794 46 30 976 740 352 934 623 626 337 195 448 294 351 668 423 120 843 547 621 886 854 794 136 118 862 9...

output:

129
44
7256
903
103
1615
11
199
460
2135
2971
707
Poor QLW
1518
1580
3977
1224
2631
7043
77
1518
72
1124
3867
Poor QLW
4443
265
52
2596
84
7
77
Poor QLW
1347
29
1196
416
951
1118
443
3808
298
10256
680
2704
Poor QLW
1714
868
498
Poor QLW
3754
13
1043
11
75
171
91
120
2
2511
48
14243
24
1662
2977
584...

result:

ok 200000 lines

Test #6:

score: 10
Accepted
time: 57ms
memory: 42016kb

input:

1 200000 10000
17 227 339 864 53 464 17 350 90 652 774 291 983 427 625 912 728 749 223 202 610 100 261 456 653 669 740 273 170 374 80 524 694 433 998 139 645 305 880 233 736 137 242 871 121 898 444 720 104 122 937 48 891 45 248 72 934 142 206 901 595 621 935 879 199 997 35 208 311 214 299 804 602 71...

output:

26658
38740
Poor QLW
4296
54915
34634
Poor QLW
6809
2391
978
Poor QLW
29274
54570
101244
4799
Poor QLW
37104
Poor QLW
6663
33219
8691
8509
22234
1742
4169
2818
39654
39913
7703
16010
1581
6323
2286
1097
3264
20768
21604
10279
2735
57639
3486
57200
65488
20385
20313
10967
8185
28233
77509
8254
48358
...

result:

ok 10000 lines

Test #7:

score: 10
Accepted
time: 89ms
memory: 59136kb

input:

1 300000 15000
524 426 70 543 829 759 450 102 758 899 776 252 626 939 661 954 958 708 852 839 588 633 753 197 164 945 398 76 379 299 353 102 475 614 770 233 726 169 742 757 107 498 155 424 210 849 3 689 304 599 629 448 44 978 183 842 753 625 817 75 751 433 577 184 467 431 469 849 405 474 889 85 94 8...

output:

Poor QLW
40172
14565
49501
19187
71731
100938
9958
57941
10725
Poor QLW
60413
4156
3439
38252
65944
16360
Poor QLW
108908
28838
54179
17751
8498
Poor QLW
85926
3197
15529
Poor QLW
14734
24741
5638
8423
28918
10649
20956
5356
50953
114545
Poor QLW
446
35046
751
32874
5006
Poor QLW
Poor QLW
18679
1362...

result:

ok 15000 lines

Test #8:

score: 10
Accepted
time: 118ms
memory: 78364kb

input:

1 400000 20000
770 580 515 525 369 62 287 280 422 32 433 338 212 172 681 361 578 269 776 133 808 163 548 923 435 654 630 92 491 579 33 650 501 390 839 833 615 539 348 303 695 196 236 744 745 579 852 406 367 751 817 777 14 994 673 793 24 665 542 197 715 464 555 779 402 636 623 111 723 670 545 149 370...

output:

52198
10762
Poor QLW
5222
19236
606
272
18391
15439
49606
1174
36999
5173
1114
35398
28000
83138
Poor QLW
62243
92896
57271
60278
5205
Poor QLW
56810
11919
30315
23410
Poor QLW
9013
51398
19481
17818
105464
16592
86387
37747
92330
3283
6455
15992
321
Poor QLW
Poor QLW
200300
229334
33173
31610
Poor ...

result:

ok 20000 lines

Test #9:

score: 10
Accepted
time: 139ms
memory: 95520kb

input:

1 500000 20000
455 936 299 721 697 266 242 607 380 626 85 488 414 347 92 206 919 484 695 955 34 988 615 895 700 497 748 629 167 569 992 862 794 506 722 945 20 976 11 599 652 822 368 322 865 808 157 607 33 771 781 875 124 517 715 143 919 882 176 734 386 641 6 495 214 642 638 532 707 981 800 403 773 5...

output:

64676
40992
42870
40530
42401
8345
12605
19896
95646
74563
13399
27135
30758
108053
79381
27019
4478
170016
5444
4755
10409
37616
70261
23844
122413
15470
97708
1157
62181
14666
32670
46796
118388
Poor QLW
282501
72818
106472
110612
94296
2443
1436
1198
197908
81531
106237
8810
31380
161483
14624
39...

result:

ok 20000 lines

Test #10:

score: 10
Accepted
time: 141ms
memory: 95532kb

input:

1 500000 20000
114 87 835 945 419 772 427 343 899 140 542 557 852 668 399 980 25 633 81 809 923 825 613 536 680 732 776 855 681 529 287 134 635 469 358 242 762 471 803 840 343 341 125 878 810 377 409 266 106 75 141 247 536 894 272 117 73 781 19 59 943 893 78 876 162 498 814 53 315 742 418 879 760 92...

output:

118358
53346
Poor QLW
96630
36356
30611
Poor QLW
35157
12703
1269
35014
260117
70540
53871
115849
37267
34722
15390
71653
64541
24903
72311
89298
4430
13374
3510
52495
97929
74650
17987
26797
5285
37720
44275
6388
45908
27389
4055
113390
11139
103000
110171
22510
152427
106649
23546
44105
33136
567
...

result:

ok 20000 lines