1 solutions

  • 0
    @ 2025-11-5 15:01:12

    C :

    #include <stdio.h>
    #include <stdlib.h>
    #include <string.h>
    int cmp ( const void *a , const void *b )
    {
    	return *(int *)a - *(int *)b;
    }
    int get_min(int num[], int cnt)
    {
    	qsort(num, cnt, sizeof(int), cmp);
    	return num[0];
    }
    int main()
    {
    	int m, n;
    	while (scanf("%d%d", &m, &n) == 2)
    	{
    		int *wi = (int*)malloc(sizeof(int) * (m + 1));
    		int i, sum = 0;
    		for (i = 0; i < m; i++)
    		{
    			scanf("%d", &wi[i]);
    			sum += wi[i];
    		}
    		int time = 0, sum_ = 0;
    		while (sum != sum_)
    		{
    			int cnt = 0;
    			int *temp = (int*)malloc(sizeof(int) * n);
    			memset(temp, 0, sizeof(int)*n);
    			for (i = 0; i < m; i++)
    			{
    				if (wi[i] != 0)
    				{
    					temp[cnt] = wi[i];
    					cnt++;
    				}
    				if (cnt == n || i == m - 1) break;
    			}
    			int min = get_min(temp, cnt);
    			time += min, sum_ += cnt * min;
    			for (i = 0, cnt = 0; i < m; i++)
    			{
    				if (wi[i] != 0)
    				{
    					wi[i] -= min;
    					cnt++;
    				}
    				if (cnt == n || i == m - 1) break;
    			}
    			free(temp);
    		}
    		printf("%d\n", time);
    		free(wi);
    	}
    	return 0;
    }
    

    C++ :

    #include<iostream>
    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<string>
    #include<cmath>
    #include<vector>
    #include<queue>
    using namespace std;
    int a[10010];
    int main()
    {
        int i,j,k,t,m,n,mm;
    
        while(cin>>m>>n)
        {
            for(i=0;i<m;i++)
                cin>>a[i];
               int  kk=m;
               int ans=0;i=0;
               if(kk>n)
               {
                while(kk>n)
                {
                  sort(a+i,a+n+i);
                     ans=ans+a[i];
                       int num=a[i];
                    for(j=i; j<n+i; j++)
                    {
                         a[j]=a[j]-num;
                          if(a[j]==0)
                          {mm=j;kk--;}
                    }
    //                for(int kkk=0;kkk<m;kkk++)
    //                    cout<<a[kkk]<<" ";
    //                    cout<<endl;
                      i=mm+1;
                   }
               }
                   sort(a,a+m);
              // cout<<a[m-1]<<endl;
                ans=ans+a[m-1];
                cout<<ans<<endl;
        }
        return 0;
    }
    
    
    • 1

    Information

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