1 条题解
-
0
C++ :
#include <cstdio> #include <algorithm> using namespace std; static long long h[160005]; int main(){ int M, N; long long V; if(scanf("%d %d %lld", &M, &N, &V) != 3) return 0; int T = M * N; for(int i=0;i<T;i++) scanf("%lld", &h[i]); sort(h, h + T); long long level = h[0], used = 0; for(int i=1;i<T;i++){ long long need = (h[i] - level) * i; if(used + need <= V){ used += need; level = h[i]; } else { long long up = (V - used) / i; level += up; used += up * i; break; } } if(used < V){ long long up = (V - used) / T; level += up; } /* 水下陆地的量 = 被淹没格子(h_i <= level)的高度之和 */ long long land = 0; for(int i=0;i<T;i++) if(h[i] <= level) land += h[i]; printf("%lld %lld\n", level, land); return 0; }
- 1
信息
- ID
- 2796
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- (无)
- 标签
- 递交数
- 0
- 已通过
- 0
- 上传者