1 solutions
-
0
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