[思考をプログラミングおよびWeek2実験Bを練習]奇跡(√)を激しく(×)ゼロバースト

質問の意味:

実験に用いた思考とリアルタイムプログラミング職務評価システムは、その機能がそれを達成する方法であることを、パフォーマンスのランキング機能へのタイムリーなアクセスを持っていますか?

私たちは、手続きを書かれており、評価システムまたはACへの復帰後に提出され、いずれか、それはあなたの過ちを提出するあなたの時間を記録する方法を間違った方法で、関係なく、様々な他のエラーを返すために、あなたは最終的には、莫大な経験したときましたACの後に、それはすべての日付に数回、この問題が表示されます。

年の長いコースで、あなたはより多くいえ渡すが、時間によってあなたは(タイトル、開始日からこの時間まで)各設問の合計時間を費やしている質問の数が記録されます、あなたは今まで現場で苦労しています。特に、あなたが合格トピックのために、あなたは、この質問はあなたが多くの人を招く可能性がある、質問の数に作るように、エラーカウント時に一定の単位時間ペナルティたびに提出されますに関するましたが、質問の同じ数を作る人に、あなたはランキングに不利でペナルティので、高すぎるかもしれません。

例えば、8つの質問(A、B、C、D、E、F、G、H)の合計として、各作ら質問が負の数に対応した問題数のマーカーの数は、学生のタイトルを示す持ってテストされています間違った番号を提出したが、今まではAC、AC正の数が正の数が正の数bを持つ一対のブラケット、に追いつくためにならば、時間の消費量は、それが学生の交流、この質問を意味していることを示していませんでした、それは同時に提出し、bは間違った時間を持っていた時間を消費します。例としては、以下の入力および出力サンプルセクションを見ることができます。

入力:

入力データが複数の行を含む場合、最初の行は、共通のタイトル番号n(1≤n≤12)と単位ペナルティM(10≤m≤20)、学生情報の記述後のデータの各行、最初の学生でありますユーザ名(これ以上10文字の文字列よりは)標識に記載のフォーマットで質問の数を記載する全てのn状態スコアは、上記のように記載された質問に続いていません。

簡単な入力:

8 20
GuGuDong 96 -3 40(3)0 0 1 0 -8
HRZ 107 67 -3 0 0 82 0 0
TT 120(3)30 10(1 )-3 0 47 21(2)-2
OMRailgun 0 -99 -9999996 -666 -10 086 0 0 -8
yjq 37 -2(2)-1 13 0113(2)、79(1)-1
Zjm 0 0 57(5)0 0 99(3)-7 0

出力:

ランキングリアルタイムのこれらの学生スコアリング出力の状態によります。リアルタイムランキングは明らかにACプレス行の数は、より前者よりも、その後、どのくらいの時間点の列、小さなフロントが起こった前にどのくらいの問題の両方が等しい場合、プレス辞書編集行の名前、最小の最初のものです。各行ごとの学生、出力名(10の文字幅)、質問の数を作るために(ワイド2つの文字を、右詰め)および時点(4つの文字幅の広い、右寄せ)。名前、タイトルおよび時間点の数互いの間にスペースがあります。データが必要な出力形式の出力を確保することができます。

サンプル出力:

TT 5348
yjq 4342
GuGuDong 3197
HRZ 3256
Zjm 2316
OMRailgun 0 0

アイデア:

プレイヤーはそれぞれchar配列を保存する名前を持つ質問の数は2人の整数交流および交流タイトルの現在の合計時間、タイプ長い長い時間の2次元配列を保持し、日付の交流周波数を保存する構造の種類を構築します。最終順位に到達するための異なる選手を比較するための書き込みCMP機能。形式で出力をランク付けするためにソート()関数を使用して、書式を入力した後。

コード:

#include <iostream>
#include <stdio.h>
#include <string>
#include<string.h>
#include <vector>
#include<algorithm>
using namespace std;
struct peo{
	char name[15];
	int numofac,time;
	long long **a;
	int numofques;
	peo(char*thename,int n)
	{
		numofques=n;
		numofac=0;
		time=0;
		strcpy(name,thename);
		a=new long long*[n];
		for(int i=0;i<n;i++)
		{
			a[i]=new long long[2];
		}
	}
	peo(const peo&b)
	{
		strcpy(name,b.name);
		this->numofac=b.numofac;
		this->time=b.time;
		this->numofques=b.numofques;
		a=new long long*[numofques];
		for(int i=0;i<numofques;i++)
		{
			a[i]=new long long[2];
		}
		for(int i=0;i<numofques;i++)
		{
			for(int j=0;j<2;j++)
				a[i][j]=b.a[i][j];
		}
	}
};
bool cmp(peo&a,peo&b)
{
	if(a.numofac!=b.numofac)
	{
		return a.numofac>b.numofac;
	}
	else if(a.time!=b.time)
	{
		return a.time<b.time;
	}
	else
	{
		return strcmp(a.name,b.name)<0;
	}
}
int main(int argc, char** argv) {
	int n,m;
	scanf("%d %d",&n,&m);
	//getchar();
	vector<peo> a;
	char name[10];
	while(scanf("%s",name)!=EOF)
	{
		peo temp(name,n);
		string str;
		for(int i=0;i<n;i++)
		{
			cin>>str;
			if(str[str.size()-1]==')')
			{
				sscanf(str.c_str(),"%lld(%lld)",&temp.a[i][0],&temp.a[i][1]);
				temp.numofac++;
				temp.time+=(temp.a[i][0]+temp.a[i][1]*m);
			}
			else{
				sscanf(str.c_str(),"%lld",&temp.a[i][0]);
				if(temp.a[i][0]>0)
				{
					temp.numofac++;
					temp.time+=temp.a[i][0];
				}
			}
		}
		a.push_back(temp);
		//getchar();
	}
	sort(a.begin(),a.end(),cmp);
	//vector<peo>::iterator it=a.begin();
	//printf("%-10s %2lld %4lld",(*it).name,(*it).numofac,(*it).time);
	for(vector<peo>::iterator it=a.begin();it!=a.end();it++)
	{
		printf("%-10s %2lld %4lld\n",(*it).name,(*it).numofac,(*it).time);
	}
	return 0;
}
公開された25元の記事 ウォンの賞賛8 ビュー546

おすすめ

転載: blog.csdn.net/weixin_44034698/article/details/104635042