QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#134928#6632. Minimize Mediansilly_1_2_3#WA 292ms12504kbC++141.5kb2023-08-05 10:05:412023-08-05 10:05:42

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-08-05 10:05:42]
  • 评测
  • 测评结果:WA
  • 用时:292ms
  • 内存:12504kb
  • [2023-08-05 10:05:41]
  • 提交

answer

#include<bits/stdc++.h>
#define FOR(i,a,b) for(int i=(a),i##z=(b);i<=i##z;i++)
#define ROF(i,a,b) for(int i=(a),i##z=(b);i>=i##z;i--)
#define REP(i,u) for(int i=hd[u],v;v=to[i],i;i=nxt[i])
#define temT template<typename T>
#define temT12 template<typename T1,typename T2>
using namespace std;
typedef pair<int,int> pii;
typedef long long ll;
typedef long double ld;
const int N=int(1e6)+10,inf=int(1e9)+7;

int T,n,m,K; int a[N],f[N],g[N],mx;

void Min(int &x,int y){ x=min(x,y); }

priority_queue<pii> pq;

int calc(int cur,int last){
	if(cur==last) return 0;
	int low=(cur==0)?(last+1):((last+cur-1)/cur);
	return f[g[low]];
}
int get_low(int cur,int last){
	if(cur==last) return 0;
	int low=(cur==0)?(last+1):((last+cur-1)/cur);
	return g[low];
}

int main(){
	for(cin>>T;T--;){
		cin>>n>>m>>K;
		FOR(i,1,n) cin>>a[i];
		sort(a+1,a+n+1); mx=a[n/2+1]+1;
		FOR(i,1,mx) f[i]=inf;
		for(int i=1,t;i<=m;i++){
			cin>>t;
			if(i<mx) f[i]=t;
			else Min(f[mx],t);
		}
		FOR(i,1,mx){
			FOR(j,1,mx/i)
				Min(f[i*j],f[i]+f[j]);
			Min(f[mx],f[i]+f[(mx+i-1)/i]);
		}
		g[mx]=mx;
		ROF(i,mx-1,1) g[i]=(f[g[i]]<f[g[i+1]])?i:g[i+1];
		int ans=mx-1,final=mx; ll tot=0;
		FOR(i,1,n/2+1) pq.push(pii(a[i],a[i]));
		while(ans>=0){
			while(pq.top().first>ans){
				pii tmp=pq.top(); pq.pop();
				tot+=calc(ans,tmp.second)-calc(tmp.first,tmp.second);
				pq.push(pii(tmp.second/get_low(ans,tmp.second),tmp.second));
			}
			if(tot<=K) ans--,Min(final,pq.top().first);
			else break;
		}
		cout<<final<<"\n";
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 1ms
memory: 7624kb

input:

3
3 5 0
2 5 2
3 2 4 6 13
3 5 3
2 5 3
3 2 4 6 13
3 5 6
2 5 2
3 2 4 6 13

output:

2
2
1

result:

ok 3 number(s): "2 2 1"

Test #2:

score: -100
Wrong Answer
time: 292ms
memory: 12504kb

input:

100000
5 10 5
3 7 1 10 10
11 6 11 6 1 8 9 1 3 1
5 6 51
2 2 2 5 1
42 61 26 59 100 54
5 10 76
7 5 8 4 7
97 4 44 83 61 45 24 88 44 44
5 8 90
1 1 5 1 3
35 15 53 97 71 83 26 7
5 3 52
1 1 3 1 1
22 6 93
5 6 28
6 6 1 3 1
9 31 2 19 10 27
5 8 31
3 6 2 1 2
32 29 13 7 57 34 9 5
5 6 75
3 3 4 5 4
40 56 38 60 17 3...

output:

7
2
0
0
0
1
0
0
3
4
0
4
1
0
1
1
0
0
2
1
1
1
0
2
2
0
0
3
0
0
2
0
0
1
3
2
0
1
0
0
0
0
2
0
2
4
1
1
0
0
2
0
0
7
1
4
2
0
1
1
1
1
1
0
1
0
0
3
1
0
6
5
0
0
1
0
2
1
0
4
0
4
0
1
0
2
0
2
1
0
1
2
2
4
1
1
4
1
0
0
1
3
2
1
2
2
1
1
2
0
0
0
0
0
1
2
1
4
3
0
4
2
2
1
0
0
2
1
3
3
2
0
0
2
3
1
0
1
1
1
0
1
5
0
1
2
1
2
2
3
...

result:

wrong answer 1st numbers differ - expected: '0', found: '7'