L - Doki Doki Literature Club 2018 浙江省賽 zoj
阿新 • • 發佈:2018-11-15
一個sort搞定的水題 我非要用priority queue去寫 智障了
。。。。
真的智障了
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<map> #include<queue> #include<string> using namespace std; struct node { char str[25]; long long value; /*friend bool operator < (node a,node b) { if(a.value!=b.value) return a.value<b.value; if(a.value==b.value) { if(strcmp(a.str,b.str)>0) return a.str>b.str; else return a.str<b.str; } }*/ }temp[110]; //priority_queue<node> q; //priority_queue<node> st; bool cmp(node a,node b) { if(a.value!=b.value) return a.value>b.value;//值由大到小 else { if(strcmp(a.str,b.str)>0)//字典序由小到大 return a.str<b.str; else return a.str>b.str; } } int main() { int t; cin>>t; while(t--) { //while(!q.empty()) q.pop(); //while(!st.empty()) st.pop(); int n,m; cin>>n>>m; for(int i=1;i<=n;i++) { scanf("%s",&temp[i].str); scanf("%lld",&temp[i].value); } sort(temp+1,temp+1+n,cmp); /*for(int i=1;i<=n;i++) { cout<<q.top().str<<' '<<q.top().value<<endl; q.pop(); }*/ long long h=0; for(int i=1;i<=m;i++) { //node in=q.top(); h+=(m-i+1)*temp[i].value; //q.pop(); } cout<<h<<' '; for(int i=1;i<=m-1;i++) { //node in=st.top(); cout<<temp[i].str<<' '; //st.pop(); } //node in=st.top(); cout<<temp[m].str<<endl; //gtx1080 } }