数组的强大作用
Sample Input
16
TEAM1 1 A Y
TEAM2 2 A N
TEAM2 3 A Y
Dream 4 A Y
TEAM3 5 A Y
TEAM3 6 B Y
TEAM4 7 A Y
TEAM4 8 B Y
TEAM4 9 C Y
Dream 10 B Y
Dream 11 C Y
TEAM3 12 C Y
TEAM1 13 B Y
TEAM1 14 C Y
TEAM1 15 D Y
Dream 16 D Y
2
Dream
TEAM1
Sample Output
time:4 rank:2
time:6 rank:3
time:8 rank:4
time:10 rank:3
time:11 rank:2
time:12 rank:3
time:15 rank:4
time:16 rank:1
time:1 rank:1
time:6 rank:2
time:8 rank:3
time:10 rank:4
time:15 rank:1
time:16 rank:2
Dream
TEAM1
TEAM3
TEAM4
TEAM2
#include "iostream"
#include "cstring"
#include "algorithm"
#include "string"
#include "map"
using namespace std;
#define sz 21
#define ca 201
int tm[sz][ca], rk[sz][ca], wg[sz][ca];
bool AC[sz][ca];
struct submit
{
string na;
int ti;
char pr, sb;
}s[ca];
struct team
{
string na;
int an, at, ra;
}t[sz], tt[sz];
bool check(team a, team b)
{
if(a.an > b.an) return true;
if(a.an==b.an && a.at<b.at) return true;
if(a.an==b.an && a.at==b.at && a.na<b.na) return true;
return false;
}
int main()
{
int n, k1 = 0, k2 = 0, flag1, flag2, df[sz], who, whi, nowtime;
string ne;
map<string, int> nm; //name
map<char, int> pm; //probelm
for(int i=0; i<21; i++)
{
t[i].an = 0; t[i].at = 0;
t[i].ra = 0; df[i] = 0;
}
memset(tm, 0, sizeof(tm)); memset(rk, 0, sizeof(rk));
memset(wg, 0, sizeof(wg)); memset(AC, false, sizeof(AC));
cin>>n;
for(int i=0; i<n; i++)
{
flag1=1; flag2=1;
cin>>s[i].na>>s[i].ti>>s[i].pr>>s[i].sb;
nowtime = s[i].ti;
for(int j=0; j<i; j++)
{
if(s[i].na==s[j].na) flag1=0;
if(s[i].pr==s[j].pr) flag2=0;
}
if(flag1)
{
t[k1].na = s[i].na; //存入姓名
nm[s[i].na]=k1; k1++;
}
if(flag2)
{
pm[s[i].pr]=k2;
k2++;
}
who = nm[s[i].na]; whi = pm[s[i].pr];
if(s[i].sb=='N') wg[who][whi]++;
else if(AC[who][whi]==false)
{
AC[who][whi]=true;
t[who].an++;
t[who].at+=(nowtime+20*wg[who][whi]);
}
for(int i=0; i<k1; i++) tt[i] = t[i];
sort(tt, tt+k1, check);
for(int j=0; j<k1; j++)
{
who = nm[tt[j].na];
if(t[who].ra!=(j+1)) //j+1是现在的排名
{
t[who].ra = j+1; df[who]++;
tm[who][df[who]]=nowtime; //记录提交时的时间
rk[who][df[who]]=j+1;
}
}
}
cin>>n;
while(n--)
{
cin>>ne;
for(int i=1; i<=df[nm[ne]]; i++) cout<<"time:"<<tm[nm[ne]][i]<<" rank:"<<rk[nm[ne]][i]<<endl;
cout<<endl;
}
for(int i=0; i<k1; i++) cout<<tt[i].na<<endl;
return 0;
}
posted on 2011-11-21 21:20 More study needed. 阅读(421) 评论(0) 编辑 收藏 举报
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架