0pts求调(悬关)
查看原帖
0pts求调(悬关)
660871
2011Andy楼主2024/7/27 10:35
#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N = 1e6 + 5;
int n , m;
int a[N];
bool check(int x){
	int cnt = 1;
	int last = 1;
    for(int i = 2 ; i <= n ; i++){
		if(a[i] - last >= x){
    		last = a[i];
    		cnt++;
    	}
    }
    if(cnt >= m) return true;
    return false;
}
signed main(){
	cin >> m >> n >> a[1];
	for(int i = 2 ; i <= m ; i++){
		a[i] = a[i - 1] + ((a[i - 1] * 2357 + 137) % 10) + 1;
//		cout << a[i] << " ";
	}
	sort(a + 1 , a + m + 1);
//	cout << a[m] << " " << a[1] << "\n";
	int l = 1 , r = a[m] , mid;
//	cout << r << "\n";
	int ans;
	while(l <= r){
		cout << l << " " << r << endl;
		mid = (r - l >> 1) + l;
//		cout << mid << " ";
		if(check(mid)){
			ans = mid;
			l = mid + 1;
		}
		else r = mid - 1;
	}
	cout << ans;
	return 0;
}
2024/7/27 10:35
加载中...