L2-009 抢红包
题目 L2-009 抢红包
思路分析
代码实现
#include<bits/stdc++.h>
using namespace std;
#define endl '\n'
using ll = long long;
using ull = unsigned long long;
using PII = pair<int,int>;
using Pll = pair<ll,ll>;
int dx[4]={-1,0,1,0},dy[4]={0,1,0,-1};
const int inf = 0x3f3f3f3f;
struct Person{
int id;
double income;
int cnt;
bool operator<(const Person& rhs) const{
if(income != rhs.income)
return income>rhs.income;
if(cnt != rhs.cnt)
return cnt>rhs.cnt;
return id<rhs.id;
}
};
int main(){
ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);
int n,k;cin>>n;
vector<int> income(n+1,0);
vector<int> cnt(n+1,0);
for(int i=1;i<=n;i++){
cin>>k;
int total=0;
for(int j=0;j<k;j++){
int receiver,money;cin>>receiver>>money;
income[i]-=money;
income[receiver]+=money;
cnt[receiver]++;
}
}
vector<Person> res;
for(int i=1;i<=n;i++){
res.push_back({i,income[i]*1.0/100,cnt[i]});
}
sort(res.begin(),res.end());
for(auto p:res){
printf("%d %.2f\n",p.id,p.income);
}
return 0;
}
同类题型
视频讲解
⬅️ L2-008 最长对称子串 🏠 00-天梯赛 ➡️ L2-010 排座位
💬 评论