- 乐乐的礼物 (gift)-S3
求调
- @ 2026-5-21 15:15:43
Runtime Error
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct node{
string s;
ll q;
}a[105];
bool cmp(node x,node y){
return x.q>y.q;
}
ll n,m,k;
string b;
int main(){
ios::sync_with_stdio(0);
cin.tie(0);
cin>>n;
for(int i=1;i<=n;i++){
cin>>a[i].s;
}
for(int i=1;i<=n;i++){
cin>>m>>k;
a[i].q+=m%k;
for(int j=1;j<=k;j++){
cin>>b;
for(int f=1;f<=n;f++){
if(a[f].s==b) a[f].q+=m%k;
}
}
}
sort(a+1,a+n+1,cmp);
for(int i=1;i<=n;i++){
cout<<a[i].s<<" "<<a[i].q<<"\n";
}
return 0;
}

2 条评论
-
root LV 3 SU @ 2026-5-29 22:27:37已修改#include<bits/stdc++.h> #define ll long long using namespace std; // 学生结构体:保存姓名、最终金额、原始学号(用于金额相同时排序) struct node{ string s; // 姓名 ll q; // 最终拥有的钱数 int id; // 原始学号(输入顺序,从1开始) }a[105]; // 最多100个学生 // 自定义排序规则 bool cmp(node x, node y){ if(x.q != y.q){ return x.q > y.q; // 优先按钱数从大到小排序 }else{ return x.id < y.id; // 钱数相同时,按原始学号从小到大排序 } } int main(){ int n; // 班级人数(用int足够,n≤100) cin >> n; // 输入n个学生的姓名,并记录原始学号 for(int i=1; i<=n; i++){ cin >> a[i].s; a[i].id = i; // 保存输入顺序作为学号 a[i].q = 0; // 初始化金额为0 } // 处理每个学生的送礼信息 for(int i=1; i<=n; i++){ ll m; // 该同学准备用来送礼的总钱数 int k; // 要送给的朋友数量 cin >> m >> k; // 处理k=0的边界情况,避免除以零错误 if(k == 0){ a[i].q += m; // 没有朋友,所有钱自己保留 continue; // 跳过后续送礼流程 } ll per = m / k; // 每个朋友能收到的钱数(整数除法) ll remain = m % k; // 分完后剩下的钱,自己保留 a[i].q += remain; // 自己保留余数 // 给每个朋友转账 for(int j=1; j<=k; j++){ string b; cin >> b; // 查找对应姓名的学生,给他加上per元 for(int f=1; f<=n; f++){ if(a[f].s == b){ a[f].q += per; break; // 找到后立即跳出循环,提高效率 } } } } // 按自定义规则排序 sort(a+1, a+n+1, cmp); // 输出结果 for(int i=1; i<=n; i++){ cout << a[i].s << " " << a[i].q << "\n"; } return 0; } -
@ 2026-5-21 17:26:45
😶
- 1
信息
- ID
- 5080
- 时间
- ms
- 内存
- MiB
- 难度
- 2
- 标签
- 递交数
- 5
- 已通过
- 1
- 上传者