coderforce Educational Codeforces Round 44 (Rated for Div. 2) C(赛后补题)
2 seconds
256 megabytes
standard input
standard output
You have m = n·k wooden staves. The i-th stave has length ai. You have to assemble n barrels consisting of k staves each, you can use any k staves to construct a barrel. Each stave must belong to exactly one barrel.
Let volume vj of barrel j be equal to the length of the minimal stave in it.
You want to assemble exactly n barrels with the maximal total sum of volumes. But you have to make them equal enough, so a difference between volumes of any pair of the resulting barrels must not exceed l, i.e. |vx - vy| ≤ l for any 1 ≤ x ≤ n and 1 ≤ y ≤ n.
Print maximal total sum of volumes of equal enough barrels or 0 if it's impossible to satisfy the condition above.
The first line contains three space-separated integers n, k and l (1 ≤ n, k ≤ 105, 1 ≤ n·k ≤ 105, 0 ≤ l ≤ 109).
The second line contains m = n·k space-separated integers a1, a2, ..., am (1 ≤ ai ≤ 109) — lengths of staves.
Print single integer — maximal total sum of the volumes of barrels or 0 if it's impossible to construct exactly n barrels satisfying the condition |vx - vy| ≤ l for any 1 ≤ x ≤ n and 1 ≤ y ≤ n.
4 2 12 2 1 2 3 2 2 3
7
2 1 010 10
20
1 2 15 2
2
3 2 11 2 3 4 5 6
0
Note
In the first example you can form the following barrels: [1, 2], [2, 2], [2, 3], [2, 3].
In the second example you can form the following barrels: [10], [10].
In the third example you can form the following barrels: [2, 5].
In the fourth example difference between volumes of barrels in any partition is at least 2 so it is impossible to make barrels equal enough.
#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<cmath>
#include<string>
#include<algorithm>
#include<vector>
#include<queue>
#include<set>
#include<map>
#include<stack>
using namespace std;
typedef long long LL;
LL arr[100010];
LL tem[100010];int main()
{LL sum=0;LL n,k;LL l;cin>>n>>k>>l;for(LL i=1;i<=n*k;i++){cin>>arr[i];}sort(arr+1,arr+1+n*k);LL j=0;tem[++j]=1;int ans;for(LL i=1;i<=n*k;i++){if(arr[i+1]!=arr[i])tem[++j]=i;else tem[j]=i;if(arr[i]==l+arr[1])ans=i;else if(arr[i]<l+arr[1]&&l+arr[1]<arr[i+1])ans=i;}LL pre=1;if(ans<n){cout<<"0";return 0;}if(n==1){cout<<arr[1];return 0;}for(LL m=1;m<=n;m++){if(pre+k-1+(n-m)<=ans&&k!=0){sum+=arr[pre];pre=pre+k;}else{while(--k){if(pre+k-1+(n-m)==ans){sum+=arr[pre];pre=pre+k;k=0;break;}}}if(k==0){for(LL i=pre;i<=ans;i++){sum+=arr[i];}break;}}cout<<sum;return 0;
}
coderforce Educational Codeforces Round 44 (Rated for Div. 2) C(赛后补题)相关推荐
- Educational Codeforces Round 44 (Rated for Div. 2)
题目链接:https://codeforces.com/contest/985 'A.Chess Placing 题意:给了一维的一个棋盘,共有n(n必为偶数)个格子.棋盘上是黑白相间的.现在棋盘上有 ...
- Educational Codeforces Round 90 (Rated for Div. 2)(A, B, C, D, E)
Educational Codeforces Round 90 (Rated for Div. 2) Donut Shops 思路 分三种情况: a==c/ba == c / ba==c/b这个时候两 ...
- Educational Codeforces Round 114 (Rated for Div. 2) (A ~ F)全题解
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 Educational Codeforces Round 114 (Rated for Div. 2) ...
- Educational Codeforces Round 106 (Rated for Div. 2)(A ~ E)题解(每日训练 Day.16 )
整理的算法模板合集: ACM模板 点我看算法全家桶系列!!! 实际上是一个全新的精炼模板整合计划 目录 Educational Codeforces Round 106 (Rated for Div. ...
- Educational Codeforces Round 37 (Rated for Div. 2) 1
Educational Codeforces Round 37 (Rated for Div. 2) A.Water The Garden 题意:Max想给花园浇水.花园可被视为长度为n的花园床,花园 ...
- Educational Codeforces Round 89 (Rated for Div. 2)(A, B, C, D)
Educational Codeforces Round 89 (Rated for Div. 2) A. Shovels and Swords 思路 题意非常简单,就是得到最多的物品嘛,我们假定a, ...
- Educational Codeforces Round 114 (Rated for Div. 2) D. The Strongest Build 暴力 + bfs
传送门 文章目录 题意: 思路: 题意: 你有nnn个装备槽,每个槽里面有cic_ici个力量加成,对于每个槽只能选一个力量加成,现在给你mmm个力量组合[b1,b2,...,bn][b_1,b_2 ...
- Educational Codeforces Round 72 (Rated for Div. 2) D. Coloring Edges dfs树/拓扑找环
传送门 文章目录 题意: 思路: 题意: 给你一张图,你需要给这个图的边染色,保证如果有环那么这个环内边的颜色不全相同,输出染色方案和用的颜色个数. n,m≤5e3n,m\le5e3n,m≤5e3 思 ...
- Educational Codeforces Round 111 (Rated for Div. 2) D. Excellent Arrays 组合数学
传送门 文章目录 题意: 思路: 题意: 给你一个数组aia_iai,定义一个数组是好的当且仅当对于所有iii都有ai!=ia_i!=iai!=i.定义f(a)f(a)f(a)表示数组aaa中i& ...
最新文章
- IOS文本框readonly时焦点事件
- Linux下调试python
- python crawler(2)
- java 接口 签名机制_java – 当接口A在其方法签名中定义接口B时
- python的输出函数_Python
- rnn按时间展开_一文搞懂RNN(循环神经网络)基础篇
- File存对象--android 的File存储到SD卡();
- 【操作系统】—操作系统的概念 目标和功能
- Java 大对象类型的 Hiberante 映射
- kali安卓手机木马远控
- HTML期末大作业课程设计~仿阴阳师游戏官网首页html模板(HTML+CSS)~动漫主题html5网页模板-HTML期末作业课程设计期末大作业动漫主题html5网页模板-html5网页设计源码...
- ADC标准 INLDNL(1)
- 如何从AD中彻底删除Skype For Business(下篇)
- Java中Number转为百分比
- 前端学习 Vue笔记 完整版
- Python--数字炸弹游戏
- unity 时间换算 时分秒
- 使用Altium Designer 绘制PCB的详细过程
- 自学软件测试该如何入门?
- 微信小程序-日历的实现