1 solutions

  • 0
    @ 2024-12-11 0:33:47

    C :

    #include<stdio.h>
    int n,m,mid,a[100001],r[100001];
    void sort(int s,int t)
    {
    	if(s==t) return;
    	int m=(s+t)/2;
    	sort(s,m);
    	sort(m+1,t);
    	int i=s;
    	int j=m+1;
    	int k=s;
    	while(i<=m&&j<=t)
    	{
    		if(a[i]<=a[j]) r[k++]=a[i++];
    	    else r[k++]=a[j++];
    	}
    	while(i<=m) r[k++]=a[i++];
    	while(j<=t) r[k++]=a[j++];
    	for(i=s;i<=t;i++) a[i]=r[i];
    }
    int judge()
    {
    	int t=a[1]-m;
    	if(t<0) t=0;
    	for(int i=2;i<=n;i++)
    	{
    		t+=mid;
    		if(a[i]<t) return 0;
    	}
    	return 1;
    }
    main()
    {
    	scanf("%d%d",&n,&m);
    	for(int i=1;i<=n;i++) scanf("%d",&a[i]);
    	sort(1,n);
    	int l=0,r=10000000;
    	if(r>a[n]) r=a[n];
    	mid=(l+r)>>1;
    	while(l<r-1)
    	{
    		if(judge()) l=mid;
    		else r=mid;
    		mid=(l+r)>>1;
    	}
    	printf("%d",mid);
    }
    

    C++ :

    #include <cstdio>
    #include <algorithm>
    
    #define  maxm  10000000
    #define  maxn  100000
    
    int n , m ;
    int L = 1 , R , M ;
    int a[maxn] ;
    
    int main() {
    	//#define READ
    	#ifdef  READ
    		freopen("sniper.in" , "r" , stdin ) ;
    		freopen("sniper.out", "w" , stdout) ;
    	#endif
    	scanf("%d%d", &n , &m ) ;
    	for (int i = 1 ; i <= n ; i ++ ) scanf("%d", &a[i] ) ;
    	std::sort(a+1,a+n+1) ; R = a[n] ;
    	int pos , flag ;
    	while (L != R) {
    		M = (L+R)>>1 ;
    		if (M == L) M++ ;
    		//printf("M = %d\n",M);
    		pos = -M ; flag = false ;
    		for (int i = 1 ; i <= n ; i ++ ) {
    			//printf("%d\n",a[i]);
    			pos += M ;
    			if (pos > a[i]) {
    				R = M-1 ; flag = true ; break ;
    			}
    			if (a[i]-m-pos > 0) pos += a[i]-m-pos ;
    		}
    		if (flag) continue ;
    		L = M ;
    	}
    	printf("%d\n", L ) ;
    	return 0 ;
    }
    /*
    6 100
    236
    120
    120
    120
    120
    120
    */
    
    • 1

    Information

    ID
    712
    Time
    1000ms
    Memory
    128MiB
    Difficulty
    (None)
    Tags
    # Submissions
    0
    Accepted
    0
    Uploaded By