【Codeforces】Round #538 (Div. 2) 1114B Yet Another Array Partitioning Task(數組+貪心)

原題鏈接:B. Yet Another Array Partitioning Task
在這裏插入圖片描述在這裏插入圖片描述
就不貼中文了,我也是直接看英文的

題意

這題題意很簡單輸入n,m,k
然後輸入一組長度爲n的序列,要求分成k組,每組的前m個最大值加起來的值要最大

題解

比賽的時候沒想打結構體排序,只想着一次sort能不能完事,後來聽了隊友一頓操作,感受到了自己思路上的不足

#include<bits/stdc++.h>
using namespace std;
int n,m,k,a[200005],id[200005];
long long sum;
bool cmp(int x,int y) {
	return a[x]>a[y];
}
int main() {
	cin>>n>>m>>k;
	int i;
	for(i=1; i<=n; i++) {
		cin>>a[i];
		id[i]=i;
	}
	sort(id+1,id+n+1,cmp);
	for(i=1; i<=m*k; i++)sum+=a[id[i]];
	cout<<sum<<'\n';
	sort(id+1,id+m*k+1);
	for(i=m; i<m*k; i+=m)cout<<id[i]<<" ";
	return 0;
}//By py_ultron, contest: Codeforces Round #538 (Div. 2), problem: (B) Yet Another Array Partitioning Task, Accepted, #
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章