重庆大学 c++2022级第七次作业——类 7-2 国际贸易统计
时隔N天 我又更新了7-2 国际贸易统计分数 10全屏浏览题目切换布局作者 葛亮单位 重庆大学这里给出N个国家之间进行国际贸易的记录,请你统计这些国家进行国际贸易的收益。
·
时隔N天 我又更新了
7-2 国际贸易统计
分数 10
全屏浏览题目
切换布局
作者 葛亮
单位 重庆大学
这里给出N个国家之间进行国际贸易的记录,请你统计这些国家进行国际贸易的收益。
输入格式:
输入第一行给出一个正整数N(≤104),即参与国际贸易的国家数量,则这些国家从1到N编号。随后N行,第i行给出编号为i的国家在贸易中卖出商品的记录,格式如下:kN1P1⋯NkPk,
其中k(0≤k≤20)是买入商品国家的个数,Ni是买入商品国家的编号,Pi>0是其买入商品的金额(整数表示,以万元为单位)。注意:一次贸易对于买入和卖出国家的贸易次数都会增加1次。输出格式:
按照收入金额从高到低的递减顺序输出每个国家的编号和收入金额(整数表示,以万元为单位)。每个国家的信息占一行,两数字间有1个空格。如果收入金额有并列,则按参与国际贸易的次数递减输出;如果还有并列,则按国家编号递增输出。
输入样例:
10 3 2 22 10 58 8 125 5 1 345 3 211 5 233 7 13 8 101 1 7 8800 2 1 1000 2 1000 2 4 250 10 320 6 5 11 9 22 8 33 7 44 10 55 4 2 1 3 8800 2 1 23 2 123 1 8 250 4 2 121 4 516 7 112 9 10
输出样例:
4 1232 10 326 5 326 9 218 6 167 7 -169 3 -211 2 -363 8 -363 1 -1163
代码长度限制
16 KB
时间限制
400 ms
内存限制
64 MB
难点一:类怎么创建 思路是什么
难点二:冒泡排序的应用
难点三:审题...我的问题
/*#include<iostream> using namespace std; class Country { public: int id; int BUY; int MONEY=0; }; int main() { int N; cin >> N; //(一号卖) (几个买) (买家1)买家钱 (买家2) 买家钱。。 //(二号卖)(几个买) (买家1)买家钱 (买家2) 买家钱。。。 //(N号卖) (几个买) (买家1)买家钱 (买家2) 买家钱。。。 Country *country=new Country[N];//N行数据 for (int i = 0; i < N; i++) { country[i].id = i + 1; } for(int i=0;i<N;i++)//每一行 {` int Buyer_Num; cin >> Buyer_Num; for (int j = 0; j < Buyer_Num; j++) { int Buyer_ID; cin >>Buyer_ID >> country[Buyer_ID].BUY; country[Buyer_ID].MONEY -= country[Buyer_ID].BUY; country[i].MONEY+= country[Buyer_ID].BUY; } } for (int i = 0; i < N; i++) { cout << country[i].id << " " << country[i].MONEY << endl; } return 0; } */前面被我搞掉了,因为我看漏了一个限制条件 ...... 如果相等 根据参与次数排名!! #include<iomanip> #include<iostream> #include<map> #include<vector> #include<algorithm> using namespace std; class country { public: int id; int cnt; int data; }; bool cmp(country a,country b) { if(a.data != b.data) return a.data > b.data; else if(a.cnt != b.cnt) return a.cnt > b.cnt; else return a.id < b.id; } int main() { int N; cin>>N; country lst[10001]; for(int i=1;i<=N;i++) { int temp,mon,num; lst[i].id = i; cin>>temp; for(int x=0;x<temp;x++) { cin>>num>>mon; lst[num].data -= mon; lst[num].cnt++; lst[i].cnt++; lst[i].data += mon; } } sort(begin(lst)+1,begin(lst)+N+1,cmp); for(int i=1;i<=N;i++) { cout<<lst[i].id<<" "<<lst[i].data<<endl; } return 0; }
更多推荐
已为社区贡献12条内容
所有评论(0)