UOJ Logo

NOI.AC

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#204642#3623. 小W的背包OccDreamer1002993ms5840kbC++2.5kb2024-06-08 09:56:252024-06-08 13:03:04

answer

//OccDreamer
#include<bits/stdc++.h>

#define vc vector
#define db double
#define fi first
#define se second
#define ll long long
#define mk make_pair
#define pb push_back
#define RI register int
#define PI pair<int,int>
#define ull unsigned long long
#define err cerr << "   -_-   " << endl
#define debug cerr << " ------------------- " << endl

#define input(x) freopen(#x".in","r",stdin)
#define output(x) freopen(#x".out","w",stdout)

#define NO puts("No")
#define YES puts("Yes")

//#define OccDreamer
//#define int long long

using namespace std;

namespace IO{
	inline ll read(){
		ll X=0, W=0; char ch=getchar();
		while(!isdigit(ch)) W|=ch=='-', ch=getchar();
		while(isdigit(ch)) X=(X<<1)+(X<<3)+(ch^48), ch=getchar();
		return W?-X:X;
	}
	inline void write(ll x){
		if(x<0) x=-x, putchar('-');
		if(x>9) write(x/10);
		putchar(x%10+'0');
	}
	inline void sprint(ll x){write(x), putchar(32);}
	inline void eprint(ll x){write(x), putchar(10);}
}using namespace IO;

const int MAXN = 3e5+5;
const int mod = 998244353;

int n, q, z, tot;

ll pre[MAXN], w[MAXN], sum;

struct val{
	ll l, r, v;	
	inline bool friend operator < (const val &x, const val &y){return x.l<y.l;}
}seg[MAXN];

inline void query(ll k, ll a, ll b, int i){
	if(a>b) swap(a,b);
	int o=upper_bound(w+1,w+1+(n+1),k)-w-1;
	if(a+b>pre[o]) return puts("No"), void();
	ll p=pre[o]; int l, r, mid;
	l=1, r=tot;
	while(l<=r){
		mid=(l+r)>>1;
		if(seg[mid].r<a) l=mid+1;
		else r=mid-1;
	}
	int id;
	if(l==tot+1) return puts("No"), void();
	else id=seg[l].v;
	p=min(p,pre[id]);
	if(b<=p-a) puts("Yes"), sum+=i;
	else puts("No");
	return ; 
}	

inline void prework(){
	ll L=-1, R=-1;
	for(int i=1;i<=n;++i){
		if(L==-1){
			L=max(pre[i-1]-w[i]+2,0ll), R=w[i]-1;
			if(L>R) L=R=-1;
			else seg[++tot]=val{L,R,i-1};
		}
		else{
			R=L-1, L=max(pre[i-1]-w[i]+2,0ll);
			if(L>R) L=R+1;
			else seg[++tot]=val{L,R,i-1}; 
		}
	}
	if(L==-1) seg[++tot]=val{0,pre[n],n};
	else if(L) seg[++tot]=val{0,L-1,n};	
	return ;
}

signed main(){
	n=read(), q=read();
	for(int i=1;i<=n;++i) w[i]=read();	
	sort(w+1,w+1+n); w[n+1]=2e18;
	for(int i=1;i<=n;++i) pre[i]=pre[i-1]+w[i];
	prework(); sort(seg+1,seg+1+tot);
	z=read(); ll k, a, b, j, c, d;
	for(int i=1;i<=q;++i){
		j=read(), c=read(), d=read();
		k=j-sum*z; a=c-sum*z; b=d-sum*z;
		query(k,a,b,i);
	}
	return 0;
}



















































详细

小提示:点击横条可展开更详细的信息

Subtask #1:

score: 10
Accepted

Test #1:

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

input:

10 10
29 1 11 5 2 48 1 3 3 34
0
1 1 1
7 2 4
11 3 1
7 474806183402 402698617390
33 11 9
4 6 12
1 3812...

output:

Yes
Yes
Yes
No
No
No
No
No
No
No

result:

ok 10 tokens

Test #2:

score: 0
Accepted
time: 0ms
memory: 1152kb

input:

10 10
5 24 30 10 1 1 3 1 2 1
0
3 8 0
3 495612370552 92914514259
0 0 0
5 18 10
0 0 0
0 0 0
0 0 0
3 34...

output:

Yes
No
Yes
No
Yes
Yes
Yes
No
Yes
No

result:

ok 10 tokens

Test #3:

score: 0
Accepted
time: 0ms
memory: 1140kb

input:

10 10
1 1 1 1 2 1 1 3 3 1
0
1 7 6
1 442476885652 309995768094
1 261016119655 768884465441
1 9 5
1 3 ...

output:

No
No
No
No
Yes
No
No
No
Yes
No

result:

ok 10 tokens

Subtask #2:

score: 10
Accepted

Test #4:

score: 10
Accepted
time: 80ms
memory: 1164kb

input:

100 300000
2 2 2 1 1 205 1 200 200 2 55 200 2 2 200 200 2 2 1 1 200 55 2 200 1 2 2 55 2 59 2 2 200 2...

output:

Yes
No
Yes
Yes
Yes
No
Yes
No
Yes
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
No
No
Yes
No
Yes
N...

result:

ok 300000 tokens

Test #5:

score: 0
Accepted
time: 70ms
memory: 1164kb

input:

100 300000
226 257 3 214 208 269 1 228 210 205 1 273 12 288 207 5 251 203 246 209 225 207 234 200 20...

output:

Yes
No
Yes
Yes
Yes
No
No
No
No
No
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
No
No
No
No
No
Yes
Y...

result:

ok 300000 tokens

Test #6:

score: 0
Accepted
time: 77ms
memory: 1160kb

input:

100 300000
21 22 26 22 20 20 27 27 34 29 32 19 19 24 19 1 22 28 27 21 20 24 26 19 21 28 31 21 29 32 ...

output:

No
No
Yes
No
No
No
No
Yes
No
No
No
No
Yes
Yes
No
Yes
No
No
Yes
Yes
Yes
Yes
No
No
Yes
No
Yes
Yes
No
N...

result:

ok 300000 tokens

Subtask #3:

score: 10
Accepted

Test #7:

score: 10
Accepted
time: 70ms
memory: 1232kb

input:

5000 300000
990 2500 2500 989 2500 5 2500 1007 1689 2500 993 996 1502 2500 2500 989 2500 1253 994 5 ...

output:

Yes
Yes
Yes
No
No
No
Yes
No
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
Yes
Yes
No
Yes
Yes
No
Yes
Yes
Yes
...

result:

ok 300000 tokens

Test #8:

score: 0
Accepted
time: 85ms
memory: 1232kb

input:

5000 300000
2573 2500 3377 3834 2510 3456 4334 2514 2577 2511 2551 2501 2500 2502 2519 2674 2546 258...

output:

No
No
No
No
No
No
No
No
Yes
Yes
No
Yes
No
Yes
No
No
Yes
No
Yes
No
No
No
Yes
No
Yes
No
No
No
Yes
No
N...

result:

ok 300000 tokens

Test #9:

score: 0
Accepted
time: 78ms
memory: 1236kb

input:

5000 300000
17 16 18 19 16 25 17 20 15 15 29 17 25 15 29 15 22 17 26 21 28 20 25 15 26 18 25 17 22 2...

output:

No
No
Yes
No
No
No
Yes
No
No
No
No
No
Yes
No
Yes
No
No
No
No
Yes
Yes
Yes
No
Yes
No
No
Yes
No
No
Yes
...

result:

ok 300000 tokens

Subtask #4:

score: 10
Accepted

Test #10:

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

input:

300000 300000
999999700006 999999770898 999999701005 999999709476 999999700060 999999700000 99999970...

output:

No
No
No
No
Yes
No
No
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
No
No
No
No
No
No
No
Yes
Yes
Yes
Yes
No
...

result:

ok 300000 tokens

Test #11:

score: 0
Accepted
time: 156ms
memory: 5836kb

input:

300000 300000
999999808789 999999725959 999999703995 999999700037 999999726780 999999823439 99999993...

output:

No
No
No
No
Yes
No
No
Yes
No
No
Yes
Yes
Yes
Yes
No
No
No
Yes
Yes
No
Yes
No
Yes
No
No
Yes
Yes
Yes
Yes...

result:

ok 300000 tokens

Test #12:

score: 0
Accepted
time: 170ms
memory: 5836kb

input:

300000 300000
650787868285 43 650787341596 650790889570 650787341595 650787342336 650787476642 65119...

output:

Yes
Yes
Yes
Yes
No
No
Yes
Yes
No
Yes
No
No
Yes
No
No
Yes
No
Yes
Yes
No
Yes
No
No
No
Yes
Yes
Yes
No
N...

result:

ok 300000 tokens

Subtask #5:

score: 10
Accepted

Test #13:

score: 10
Accepted
time: 173ms
memory: 5836kb

input:

300000 300000
999999700006 999999770898 999999701005 999999709476 999999700060 999999700000 99999970...

output:

No
Yes
No
Yes
Yes
Yes
Yes
No
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
No
Yes
Yes
Yes
Ye...

result:

ok 300000 tokens

Test #14:

score: 0
Accepted
time: 169ms
memory: 5840kb

input:

300000 300000
999999808789 999999725959 999999703995 999999700037 999999726780 999999823439 99999993...

output:

Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
No
Yes
No
No
Yes
Yes
No
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Ye...

result:

ok 300000 tokens

Test #15:

score: 0
Accepted
time: 195ms
memory: 5832kb

input:

300000 300000
650787868285 43 650787341596 650790889570 650787341595 650787342336 650787476642 65119...

output:

No
No
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No
Yes
Yes
Yes
No
Yes
Yes
Yes
Ye...

result:

ok 300000 tokens

Subtask #6:

score: 10
Accepted

Test #16:

score: 10
Accepted
time: 46ms
memory: 1164kb

input:

100 300000
2 2 2 1 1 205 1 200 200 2 55 200 2 2 200 200 2 2 1 1 200 55 2 200 1 2 2 55 2 59 2 2 200 2...

output:

No
Yes
Yes
Yes
Yes
Yes
No
Yes
No
Yes
Yes
Yes
Yes
No
Yes
Yes
No
Yes
Yes
Yes
No
No
Yes
No
No
Yes
Yes
Y...

result:

ok 300000 tokens

Test #17:

score: 0
Accepted
time: 36ms
memory: 1160kb

input:

100 300000
226 257 3 214 208 269 1 228 210 205 1 273 12 288 207 5 251 203 246 209 225 207 234 200 20...

output:

No
Yes
Yes
Yes
Yes
Yes
Yes
No
No
No
No
Yes
No
No
No
No
Yes
No
Yes
No
No
Yes
No
No
Yes
Yes
Yes
Yes
No...

result:

ok 300000 tokens

Test #18:

score: 0
Accepted
time: 46ms
memory: 1160kb

input:

100 300000
21 22 26 22 20 20 27 27 34 29 32 19 19 24 19 1 22 28 27 21 20 24 26 19 21 28 31 21 29 32 ...

output:

No
No
No
Yes
No
No
No
No
No
Yes
Yes
Yes
No
Yes
No
No
No
Yes
Yes
No
Yes
Yes
Yes
Yes
No
No
No
No
No
Ye...

result:

ok 300000 tokens

Subtask #7:

score: 10
Accepted

Test #19:

score: 10
Accepted
time: 64ms
memory: 1232kb

input:

5000 300000
990 2500 2500 989 2500 5 2500 1007 1689 2500 993 996 1502 2500 2500 989 2500 1253 994 5 ...

output:

No
Yes
No
Yes
Yes
No
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
Yes
No
No...

result:

ok 300000 tokens

Test #20:

score: 0
Accepted
time: 62ms
memory: 1232kb

input:

5000 300000
2573 2500 3377 3834 2510 3456 4334 2514 2577 2511 2551 2501 2500 2502 2519 2674 2546 258...

output:

No
Yes
Yes
No
No
No
Yes
Yes
No
No
No
Yes
Yes
Yes
No
No
Yes
Yes
Yes
No
No
No
Yes
No
Yes
No
Yes
No
Yes...

result:

ok 300000 tokens

Test #21:

score: 0
Accepted
time: 45ms
memory: 1232kb

input:

5000 300000
17 16 18 19 16 25 17 20 15 15 29 17 25 15 29 15 22 17 26 21 28 20 25 15 26 18 25 17 22 2...

output:

No
No
No
Yes
Yes
No
Yes
Yes
No
No
Yes
No
No
No
No
Yes
No
Yes
No
Yes
No
Yes
No
No
No
No
Yes
No
No
No
...

result:

ok 300000 tokens

Subtask #8:

score: 10
Accepted

Test #22:

score: 10
Accepted
time: 171ms
memory: 5836kb

input:

300000 300000
999999700006 999999770898 999999701005 999999709476 999999700060 999999700000 99999970...

output:

No
No
Yes
Yes
No
No
Yes
No
No
No
Yes
Yes
No
No
Yes
No
Yes
No
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
No
Ye...

result:

ok 300000 tokens

Test #23:

score: 0
Accepted
time: 184ms
memory: 5836kb

input:

300000 300000
999999808789 999999725959 999999703995 999999700037 999999726780 999999823439 99999993...

output:

Yes
No
No
No
No
No
Yes
No
No
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
No
No
Yes
Yes
No
No
Yes
Yes
No
No
Yes
No...

result:

ok 300000 tokens

Test #24:

score: 0
Accepted
time: 186ms
memory: 5832kb

input:

300000 300000
650787868285 43 650787341596 650790889570 650787341595 650787342336 650787476642 65119...

output:

No
Yes
Yes
No
Yes
Yes
Yes
No
Yes
Yes
No
Yes
Yes
Yes
Yes
No
Yes
Yes
Yes
Yes
Yes
No
No
Yes
No
Yes
Yes
...

result:

ok 300000 tokens

Subtask #9:

score: 20
Accepted

Test #25:

score: 20
Accepted
time: 213ms
memory: 5836kb

input:

300000 300000
999999700006 999999770898 999999701005 999999709476 999999700060 999999700000 99999970...

output:

No
No
No
No
No
Yes
Yes
No
Yes
No
Yes
Yes
No
No
Yes
No
Yes
No
No
Yes
No
Yes
Yes
No
Yes
Yes
Yes
Yes
No...

result:

ok 300000 tokens

Test #26:

score: 0
Accepted
time: 232ms
memory: 5840kb

input:

300000 300000
999999808789 999999725959 999999703995 999999700037 999999726780 999999823439 99999993...

output:

Yes
No
Yes
Yes
No
Yes
Yes
No
No
Yes
Yes
Yes
No
Yes
Yes
Yes
No
No
No
Yes
Yes
No
Yes
No
No
Yes
No
No
Y...

result:

ok 300000 tokens

Test #27:

score: 0
Accepted
time: 244ms
memory: 5836kb

input:

300000 300000
650787868285 43 650787341596 650790889570 650787341595 650787342336 650787476642 65119...

output:

No
Yes
No
Yes
Yes
Yes
No
Yes
No
No
No
No
No
Yes
No
Yes
Yes
No
No
Yes
No
Yes
Yes
Yes
No
No
No
No
No
Y...

result:

ok 300000 tokens

Extra Test:

score: 0
Extra Test Passed