/ 最後に終了ララララララ涙が走ったおお
、私が実際におお年近くのために少し愚かな質問カードをシミュレートする
自動無視してください /
無実のシミュレーションこの質問はあるの
1のためにソートされる
に従って、その後、非増加チケット昇順にランク付けスコアで
一度、千万人を完了して初期化
レベルはハードに対処するための文字があるので、私は...クラスそれらのRを()を使用して、
樽のものの2つの条件のため
に関数を書きます探している文字がデジタル電源を入れた後、
バケツに直接番号を、バケットが終了...良いスコアを保持
3のために、これは私がされた年、伝説のカードですおお
、私はいつもそれが対応する文字列で解決されると、初期化したいです配列は、配列は、人々の数が保存されても良いとして検査室、検査室の列の内側に保たれ、突然私の料理...料理叫びされてきた
ので、私賢く、とにかく、データではなく、数千万人にオンラインの暴力、およびダイレクト年末までに、ソートemmmを書くために、emmm、配列の検査室番号、検査室の寄託番号を有する店を見つけます...!
コード
#include <bits/stdc++.h>
using namespace std;
struct stu{
string name; //准考证号
int fen,ban,rank; //分数,考场编号,等级
}sb[10004];
int ren[1005],de[1005];
int w[10005],ge[1005];
int r(char c) //得阶级斗争
{
if(c == 'T') return 3;
if(c == 'A') return 2;
if(c == 'B') return 1;
}
int db(string s) //得考场编号
{
int point = 0;
for (int i = 0; i < 3; i++)
{
point = point*10+s[i]-'0';
}
return point;
}
int comp(stu a,stu b)
{
if(a.rank == b.rank)
{
if(a.fen == b.fen) return a.name < b.name; //准考小优先
return a.fen > b.fen; //分高优先
}
return a.rank > b.rank ; // 阶级高优先
}
int comp2(int a,int b)
{
if(ge[a] == ge[b]) return a < b; //人同班级编号小优先
return ge[a] > ge[b]; //人多优先
}
int main()
{
int n,t; string s;
scanf("%d%d",&n,&t);
for (int i = 0; i < n; i++)
{
cin>>s; int b = db(s.substr(1,3));//得到考场号
//printf("%d\n",b);
scanf("%d",&sb[i].fen);
sb[i].name = s;
sb[i].rank = r(s[0]);
sb[i].ban = b;
ren[b]++; de[b] += sb[i].fen;
}
//初始化
sort(sb,sb+n,comp);//按等级排序
for (int i = 1; i <= t; i++)
{
int what,b,ok = 0; char c;
scanf("%d",&what);
if(what == 1)
{
scanf(" %c",&c);
printf("Case %d: 1 %c\n",i,c);
for (int j = 0; j < n; j++)
{
if(sb[j].name[0] == c)
{
ok = 1;
cout<<sb[j].name<<" "<<sb[j].fen<<endl;
}
}
if(!ok) printf("NA\n");
}
else if(what == 2)
{
scanf("%d",&b);
printf("Case %d: 2 %d\n",i,b);
if(!ren[b]) printf("NA\n");
else printf("%d %d\n",ren[b],de[b]);
}
else
{
int ws = 0;
memset(w,0,sizeof(w));
memset(ge,0,sizeof(ge)); //记得初始化
cin >> s;
printf("Case %d: 3 ",i); cout<<s<<endl;
for (int j = 0; j < n; j++)
{
if(sb[j].name.substr(4,6) == s)
{
if(!ge[sb[j].ban])
{
w[ws++] = sb[j].ban;
}
ge[sb[j].ban]++;
}
}
if(!ws) printf("NA\n");
else
{
sort (w,w+ws,comp2);
for (int j = 0; j < ws; j++)
{
printf("%d %d\n",w[j],ge[w[j]]);
}
}
}
}
return 0;
}