PAT (Advanced Level) 1025. PAT Ranking (25)
2016-05-18 08:14
459 查看
简单题。
#include<iostream> #include<cstring> #include<cmath> #include<algorithm> #include<cstdio> #include<queue> #include<string> #include<vector> using namespace std; const int maxn=110; int n,tot=0; int sz[maxn]; struct X { string id; int c; int ans1,ans2,ans3; }s[30000+10]; bool cmp(const X&a,const X&b) { return a.c>b.c; } bool cmp1(const X&a,const X&b) { if(a.ans1==b.ans1) return a.id<b.id; return a.ans1<b.ans1; } int main() { scanf("%d",&n); int sum=0; for(int i=1;i<=n;i++) { scanf("%d",&sz[i]); for(int j=1;j<=sz[i];j++) { ++tot; cin>>s[tot].id; cin>>s[tot].c; s[tot].ans2=i; } sort(s+sum+1,s+1+tot,cmp); s[sum+1].ans3=1; for(int i=sum+2;i<=tot;i++) { if(s[i].c==s[i-1].c) s[i].ans3=s[i-1].ans3; else s[i].ans3=i-sum; } sum=tot; } sort(s+1,s+tot+1,cmp); s[1].ans1=1; for(int i=2;i<=tot;i++) { if(s[i].c==s[i-1].c) s[i].ans1=s[i-1].ans1; else s[i].ans1=i; } sort(s+1,s+tot+1,cmp1); printf("%d\n",tot); for(int i=1;i<=tot;i++) { cout<<s[i].id; printf(" %d %d %d\n",s[i].ans1,s[i].ans2,s[i].ans3); } return 0; }
相关文章推荐
- C#两个DataTable拷贝问题:该行已经属于另一个表的解决方法
- git简单使用方法
- CSS实践总结——选择器详解与字体样式
- 【EF】DBFirst数据库优先
- 2016-HNUST-种草莓
- 记一次清除ddos肉鸡的经历
- eclipse常用开发插件
- nyoj 1085 部分和(数学)
- BZOJ2809——[Apio2012]dispatching
- iOS - block
- 微信浏览器是移动端的IE6?微信升级内核后Html5和CSS3兼容性总结
- Activity 切换运行模式后的意外情况
- jfinal 报异常:java.lang.NoSuchMethodError: javax.servlet.ServletContext.getJspConfigDescriptor
- BZOJ1833 [ZJOI2010]count 数字计数
- Stirling数
- BZOJ2809——[Apio2012]dispatching
- C# 笔记——排序
- sed of shell
- solr多集合配置
- solr多集合配置