QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#648622#8354. T2kgqy0 57ms40668kbC++141.4kb2024-10-17 19:42:352024-10-17 19:42:35

Judging History

你现在查看的是最新测评结果

  • [2024-10-17 19:42:35]
  • 评测
  • 测评结果:0
  • 用时:57ms
  • 内存:40668kb
  • [2024-10-17 19:42:35]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define int long long
inline int read(){
	int w=0;char ch=getchar();
	while(!isdigit(ch)) ch=getchar();
	while(isdigit(ch)) w=w*10+ch-'0',ch=getchar();
	return w;
}
const int B=1;
int n,m,k;
int f[2000005],g[1005];
int dis[2000005],val[2000005];
int sop[2000005],sx[2000005];
int vis[2000005],ans[2000005];
main(){
	n=read(),m=read(),k=read();
	memset(g,0x3f,sizeof(g));g[0]=0;
	for(int i=1;i<=n;i++) dis[i]=read(),val[i]=read();
	for(int i=1;i<=m;i++){
		sop[i]=read(),sx[i]=read();
		if(sop[i]==1) vis[sx[i]]=1;
	}
	for(int i=1;i<=n&&dis[i]<B;i++){
		if(vis[i]) continue;
		for(int j=k;j>=dis[i]*val[i];j--) f[j]=max(f[j],f[j-dis[i]*val[i]]+val[i]);
	}
	for(int i=n;i&&dis[i]>=B;i--){
		if(vis[i]) continue;
		// printf("ins %d\n",i);
		for(int j=k/dis[i];j>=val[i];j--) g[j]=min(g[j],g[j-val[i]]+dis[i]*val[i]);
		// for(int j=0;j<=k/B;j++) printf("%d ",g[j]);puts("");
	}
	for(int i=m;i;i--){
		if(sop[i]==2){
			int lim=sx[i];
			for(int j=0;j<=k/B;j++){
				if(g[j]>lim) continue;
				ans[i]=max(ans[i],j+f[lim-g[j]]);
			}
		}else{
			int p=sx[i];
			if(dis[p]<B){
				for(int j=k;j>=dis[p]*val[p];j--) f[j]=max(f[j],f[j-dis[p]*val[p]]+val[p]);
			}else{
				for(int j=k/B;j>=val[p];j--) g[j]=min(g[j],g[j-val[p]]+dis[p]*val[p]);
			}
		}
	}
	for(int i=1;i<=m;i++){
		if(sop[i]==2) printf("%lld\n",ans[i]);
	}
}

Details

Tip: Click on the bar to expand more detailed information

Subtask #1:

score: 0
Wrong Answer

Test #1:

score: 0
Wrong Answer
time: 30ms
memory: 16192kb

input:

3205 5000 5000
1 1
2 1
3 1
7 1
8 1
9 1
10 1
11 1
12 2
13 1
14 2
16 1
17 2
20 3
22 1
24 1
26 2
27 1
30 1
32 2
33 1
34 1
41 1
44 2
49 2
51 1
54 2
58 2
61 2
65 2
66 1
68 2
70 1
71 2
72 2
74 8
75 3
76 5
77 1
78 7
79 5
80 5
81 1
82 2
84 1
86 6
87 6
88 3
89 9
90 5
91 1
92 2
93 3
95 7
96 2
97 2
98 8
99 8
1...

output:

5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
5000
...

result:

wrong answer 1st lines differ - expected: '81', found: '5000'

Subtask #2:

score: 0
Wrong Answer

Test #11:

score: 0
Wrong Answer
time: 57ms
memory: 40668kb

input:

1277351 1 2000000
2 2
5 1
7 3
8 4
10 1
12 1
15 2
16 1
18 1
22 1
25 1
28 3
29 1
32 1
35 1
36 1
38 2
40 1
41 2
42 1
43 2
44 2
45 1
48 1
49 1
50 2
54 2
55 2
56 1
58 2
59 2
60 2
62 1
66 1
68 3
69 1
70 3
72 2
76 1
78 1
79 2
81 2
82 3
84 2
85 1
86 2
89 1
90 2
91 2
92 1
93 1
96 3
98 3
99 2
100 3
101 1
102 ...

output:

2000000

result:

wrong answer 1st lines differ - expected: '1771', found: '2000000'

Subtask #3:

score: 0
Time Limit Exceeded

Test #21:

score: 0
Time Limit Exceeded

input:

5000 5000 2000000
1 1
2 1
3 1
4 1
6 1
7 1
8 1
9 1
10 1
11 1
14 1
15 3
17 2
18 2
21 1
22 1
24 1
25 3
27 1
28 2
29 1
30 1
31 1
32 1
33 1
34 1
35 1
37 1
38 1
39 1
40 2
41 2
43 1
45 1
47 1
49 1
50 1
51 1
54 1
55 1
56 1
61 1
62 2
64 1
65 1
67 2
68 2
70 2
72 2
74 1
76 3
79 2
82 4
83 2
84 1
88 1
91 1
92 1
...

output:


result:


Subtask #4:

score: 0
Time Limit Exceeded

Test #31:

score: 0
Time Limit Exceeded

input:

191299 5000 300000
1 1
5 1
6 2
7 1
8 1
10 1
11 2
12 2
17 1
18 1
19 1
20 1
21 1
22 2
25 1
28 1
29 2
30 1
31 2
34 1
36 1
37 1
38 1
40 1
42 1
43 1
44 1
45 1
47 2
48 1
51 1
53 3
54 2
56 2
58 2
59 2
61 2
63 4
64 2
67 1
68 2
69 2
70 1
72 1
76 1
77 1
78 1
80 2
83 1
84 1
87 1
88 1
89 1
91 2
93 1
95 1
96 1
9...

output:

300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000
300000...

result:


Subtask #5:

score: 0
Time Limit Exceeded

Test #41:

score: 0
Time Limit Exceeded

input:

1278949 5000 2000000
4 1
9 1
12 1
13 1
15 2
20 1
21 2
26 1
36 1
39 2
43 1
46 2
59 1
64 1
66 1
71 1
73 1
75 1
78 2
83 1
87 1
89 1
92 1
97 1
103 1
104 1
108 1
111 1
113 1
114 1
117 2
118 1
130 1
137 1
140 1
151 1
152 1
155 1
158 2
163 1
164 1
165 1
168 1
172 1
173 1
183 1
185 1
186 1
192 1
208 1
210 2...

output:


result: