タイトル:爆発ゼロ(X)精力的に奇跡(√)
対象の説明:実験に用いたメンタルタスクやリアルタイム評価システムのプログラミング、ランキングの性能の特性へのタイムリーなアクセスを持っている、そしてその機能があることをどのようにそれを達成するために?
私たちは憎しみの上に非常に懸命に働いたと他のさまざまなエラーを返すようにどちらか、ACへの提出、評価システムや復帰後のプログラムに見て耐えることができない、間違った方法では、それは常にあなたが表示され、あなたが幸運を覚えて与えるどんなにピットは、前にここにいますが、あなたは最終的には莫大ACを経験したとき、それはあなたのペンや台帳を計算します、すべての日付で、この問題が数回あることを示していました。
年の長いコースで、あなたはより多くいえ渡すが、時間によってあなたは(タイトル、開始日からこの時間まで)各設問の合計時間を費やしている質問の数が記録されます、あなたは今まで現場で苦労しています。特に、あなたが合格トピックのために、あなたは、この質問はあなたが多くの人を招く可能性がある、質問の数に作るように、エラーカウント時に一定の単位時間ペナルティたびに提出されますに関するましたが、質問の同じ数を作る人に、あなたはランキングに不利でペナルティので、高すぎるかもしれません。
例えば、8つの質問(A、B、C、D、E、F、G、H)の合計として、各作ら質問が負の数に対応した問題数のマーカーの数は、学生のタイトルを示す持ってテストされています間違った番号を提出したが、今まではAC、AC正の数が正の数が正の数bを持つ一対のブラケット、に追いつくためにならば、時間の消費量は、それが学生の交流、この質問を意味していることを示していませんでした、それは同時に提出し、bは間違った時間を持っていた時間を消費します。例としては、以下の入力および出力サンプルセクションを見ることができます。
入力:生徒入力データの記述が複数行の情報が含まれていた後にM(10≤m≤20)、データの各行は、最初の行は、最初のタイトルの数N(1≤n≤12)及びペナルティ時間単位を、共有されています現状続く学生のユーザー名は(これ以上10文字の文字列より)、質問マークの数に記載のフォーマットを説明し、すべてのN個の質問に得点上記の表を参照します。
出力:生徒入力データの記述が複数行の情報が含まれていた後にM(10≤m≤20)、データの各行は、最初の行は、最初のタイトルの数N(1≤n≤12)及びペナルティ時間単位を、共有されています現状続く学生のユーザー名は(これ以上10文字の文字列より)、質問マークの数に記載のフォーマットを説明し、すべてのN個の質問に得点上記の表を参照します。〜
アイデアの崩壊:小さなシミュレーションはライン上やフォーマットに時間、注意を払うをソートした後、タイトルを見つけるのですか。
コード:
#include<iostream>
#include<algorithm>
#include<cstring>
#include<vector>
using namespace std;
struct node
{
string name;
int num;
int scor;
};
int cnt(string h,int m)//判断时间
{
int total=0,tt=0;
int flag=0;
for(int i=0;i<h.size();i++)
{
if(h[i]!='('&&flag==0)
{
total*=10;
total+=int(h[i]-'0');
}
if(h[i]=='(')
{
flag=1;
continue;
}
if(flag==1&&h[i]!=')')
{
tt=tt*10+int(h[i]-'0');
}
}
total+=tt*m;
return total;
}
bool cmp(node a,node b)
{
if(a.num!=b.num)
{
return a.num>b.num;
}else if(a.scor!=b.scor)
{
return a.scor<b.scor;
}else
{
return a.name<b.name;
}
}
int main()
{
int n,m;
cin>>n>>m;
string Name;
vector<node> p;
while(cin>>Name)
{
string ti[n];
int total=0,score=0;
for(int i=0;i<n;i++)//求出这个人的信息
{
cin>>ti[i];
if(ti[i]=="0"||ti[i][0]=='-')
{
continue;
}else
{
total++;
score+=cnt(ti[i],m);
}
}
node h;
h.name=Name,h.num=total,h.scor=score;
p.push_back(h);
}
sort(p.begin(),p.end(),cmp);//排序
for(int i=0;i<p.size();i++)//判定输出格式
{
cout<<p[i].name;
if(p[i].name.size()<10)
{
for(int j=p[i].name.size();j<=10;j++)
{
cout<<" ";
}
}
if(p[i].num<10)
{
cout<<" "<<p[i].num<<" ";
}else
{
cout<<p[i].num<<" ";
}
int nn=0,u=p[i].scor;
if(u==0)
{
cout<<" 0"<<endl;
continue;
}
while(u!=0)
{
u=u/10;
nn++;
}
for(int j=0;j<4-nn;j++)
{
cout<<" ";
}
cout<<p[i].scor<<endl;
}
}