QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#101291#6130. Plants vs. Zombiesb2ogeymanWA 197ms4928kbC++141.7kb2023-04-29 07:23:472023-04-29 07:23:51

Judging History

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

  • [2023-08-10 23:21:45]
  • System Update: QOJ starts to keep a history of the judgings of all the submissions.
  • [2023-04-29 07:23:51]
  • 评测
  • 测评结果:WA
  • 用时:197ms
  • 内存:4928kb
  • [2023-04-29 07:23:47]
  • 提交

answer

#include <bits/stdc++.h>
//#include <bits/extc++.h>
//using namespace __gnu_pbds;
using namespace std;
#define int long long int
 
#define rep(i, a, b) for(int i = a; i < (b); ++i)
#define repb(i, a, b) for(int i = (a); i >= (b); --i)
#define trav(a, x) for(auto& a : x)
#define all(x) begin(x), end(x)
#define sz(x) (int)(x).size()
#define ff first
#define ss second
typedef long long ll;
typedef long double ld;
typedef pair<int, int> pii;
typedef vector<int> vi;
#define pb push_back
 
#define ln '\n'
template<typename T1,typename T2>
ostream& operator <<(ostream& c,pair<T1,T2> &v){
	c<<"("<<v.ff<<","<<v.ss<<")"; return c;
}
template <template <class...> class TT, class ...T>
ostream& operator<<(ostream& out,TT<T...>& c){
    out<<"{ ";
    for(auto &x : c) out<<x<<" ";
    out<<"}"; return out;
}
 
const int MOD = 1e9+7, LIM = 2e5+5;
mt19937 rng(chrono::steady_clock::now().time_since_epoch().count());
 
int n, m;
int a[LIM];
 
bool attain(int v){
 
	int b[n];
	rep(i, 0, n) {
		b[i] = (v + a[i]-1)/a[i];
		b[i]--;
	}
	//init it
	int best = n;
	rep(i, 1, n) {
		best += 2*max(0LL, b[i-1]);
		b[i] -= max(0LL, b[i-1]);
	}
	if (b[n-1] <= -1) best--;
	best += 2*max(0LL, b[n-1]);
	// cerr << ?best << " " << v << ln;
	return (best<=m);
}
 
signed main() {
	cin.tie(0)->sync_with_stdio(0);
	cin.exceptions(cin.failbit);
 
	int tests = 1;
	cin >> tests;
 
	while(tests--){
		cin >> n >> m;
		rep(i, 0, n) cin >> a[i];
		int l = 0, r = 100000 * m + 1;
		while(l < r){
			// find last val which attainable
			int mid = (l+r)/2;
			if(attain(mid)){
				l = mid+1;
			}		
			else{
				r = mid;
			}
		}
		cout << l-1 << endl;
	}
	return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 2ms
memory: 3304kb

input:

2
4 8
3 2 6 6
3 9
10 10 1

output:

6
4

result:

ok 2 number(s): "6 4"

Test #2:

score: -100
Wrong Answer
time: 197ms
memory: 4928kb

input:

116
4 0
3 2 6 6
4 1
3 2 6 6
10 19
10 2 8 4 2 4 9 3 3 3
4 8
3 9 3 6
2 19
2 10
11 15
3 1 1 4 3 7 10 8 6 7 10
10 14
8 7 1 1 10 9 2 8 10 7
2 13
2 3
10 10
8 1 6 6 9 4 7 1 8 8
7 14
6 7 4 5 3 1 3
11 6
8 1 10 9 7 2 6 6 1 3 9
4 10
6 1 3 8
7 7
10 6 2 10 4 7 2
5 11
9 10 5 9 2
9 1
2 4 8 6 2 8 8 1 6
4 5
7 2 9 8
...

output:

-1
-1
4
6
20
3
2
14
1
4
-1
4
2
6
-1
2
24
3
30
10
-1
2
3
-1
0
2
6
-1
1
6
24
28
1
4
3
-1
4
10
6
4
1
5
-1
2
0
7
30
2
-1
0
16
8
-1
30
2
30
4
2
0
-1
2
-1
2
-1
5
2
-1
-1
-1
-1
5
-1
4
6
28
-1
-1
21
3
0
2
4
-1
-1
14
4
6
1
-1
5
14
3
8
-1
4
-1
10
12
5
8
1
6
12
-1
725
-1
17
132
676
588
110
-1
163
1371218013679...

result:

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