sort対構造体並べ替え

6224 ワード

構造体をsortで並べ替える手順は以下の通りである.c++ヘッダファイル#include#include//これはsortのヘッダファイルusing namespace stdです. 2.構造体egを定義する:struct node{int x;int y;}a[105];3.書き込み定義関数(以下、小から大行列用)bool cmp(node a,node b)/bool形{if(a.y==b.y)//両構造体のyが同一である場合、それらのx値によってreturn a.xelse return a.y}4を小から大まで配列する.最後にsort(a,a+n,cmp);//nは構造体の長さを定義し、cmpは比較関数である開門者と閉門者のTime Limit:2000/1000 MS(Java/others)Memory Limit:65536/32768 K(Java/others)Total Submission(s):18381 Accepted Submission(s):9333
Problem Description
毎日最初に機械室に着いた人はドアを開け、最後に離れた人はドアを閉めなければならない.雑然とした機械室のくじが山積みになっている
到着、サインオフの記録は、記録に基づいて当日ドアを開けたり閉めたりする人を見つけてください.
 
Input
テスト入力の最初の行は、記録の合計日数N(>0)を与える.以下にN日間の記録を示す.
毎日のレコードは、最初の行にレコードのエントリ数M(>0)を与え、以下はM行であり、各行のフォーマットは
証明書番号の署名時間のチェックアウト時間
ここで時間は「時間:分:秒」(各2桁)で与えられ、証明書番号は15を超えない文字列である.
 
Output
毎日の記録に1行、すなわち当日の開門者と閉門者の証明書番号を出力し、真ん中を1スペースで区切る.
注意:審判の標準テスト入力では、すべての記録が完全であることを保証し、一人一人の署名時間は署名が離れる前に、
同時にサインしたり、サインしたりする人は多くありません.
 
Sample Input
 
       
31ME3021112225321 00:00:00 23:59:592EE301218 08:05:35 20:56:35MA301134 12:35:45 21:40:423CS301111 15:30:28 17:00:10SC3021234 08:00:00 11:25:25CS301133 21:45:00 21:58:40
 
Sample Output
 
       
ME3021112225321 ME3021112225321EE301218 MA301134SC3021234 CS301133
#include  
#include  
#include  
using namespace std;  
struct people  
{  
    char num[20];  
    char stime[20];  
    char etime[20];  
}peo[500];  
int cmp1(people a,people b)  
{  
    return strcmp(a.stime,b.stime)<0;  
}  
int cmp2(people a,people b)  
{  
    return strcmp(a.etime,b.etime)>0;  
}  
int main()  
{  
    int n,m,i;  
    scanf("%d",&n);  
    while(n--)  
    {  
        scanf("%d",&m);  
        for(i=0;i

EXCELソート
Time Limit: 10000/5000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 22084    Accepted Submission(s): 7970
Problem Description
Excelでは、レコードのセットを任意の指定された列でソートできます.プログラムを作成して類似の機能を実現してください.
 
Input
テスト入力には、いくつかのテスト例が含まれます.各試験例の第1行は、2つの整数N(<=10000000)とCを含み、ここで、Nはレコードのストライプ数であり、Cは指定されたソートの列番号である.以下N
行、各行に学生記録が含まれています.各生徒レコードは、学号(6桁の数字、同じグループのテストで重複しない学号)、氏名(8桁を超えずスペースを含まない文字列)、成績(閉区間[0,100]内の整数)で構成され、各項目間は1つのスペースで区切られている.N=0と読むと、全入力が終了し、対応する結果は出力されない.
 
Output
各テストケースについて、まず1行「Case i:」が出力され、iはテストケースの番号(1から)である.その後、N行において、C=1の場合は、学番でインクリメントされ、C=2の場合は、名前の非減算辞書順でソートされ、C=3の場合は、C=1の場合は、学番でインクリメントされ、C=2の場合は、名前の非減算辞書順でソートされる
の場合は、成績の非減算順に並べ替えます.何人かの学生が同じ名前または同じ成績を持っている場合、彼らの学号によって順番に並べ替えられます.
 
Sample Input
 
   
3 1000007 James 85000010 Amy 90000001 Zoe 604 2000007 James 85000010 Amy 90000001 Zoe 60000002 James 984 3000007 James 85000010 Amy 90000001 Zoe 60000002 James 900 0
 
Sample Output
 
   
Case 1:000001 Zoe 60000007 James 85000010 Amy 90Case 2:000010 Amy 90000002 James 98000007 James 85000001 Zoe 60Case 3:000001 Zoe 60000007 James 85000002 James 90000010 Amy 90
#include
#include
#include
using namespace std;
struct student
{
	string num;
	string name;
	int grade;
}stu[100000];
bool cmp1(student a,student b)
{
	return a.num>n>>m&&n)
	{
		for(int i=0;i>stu[i].num>>stu[i].name>>stu[i].grade;
		switch(m)
		{
			case 1:
				sort(stu,stu+n,cmp1);break;
			case 2:
				sort(stu,stu+n,cmp2);break;
			case 3:
				sort(stu,stu+n,cmp3);break;
		}
		cout<

今年の夏休みは
Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 70127    Accepted Submission(s): 37744
Problem Description
「今年の夏休みはACじゃないの?」
「はい」
「じゃあ、何してるの?」
「ワールドカップを見て、バカ!」
“@#$%^&*%...”
確かに、ワールドカップが来て、ファンの祝日も来て、多くのACMerもパソコンを捨てて、テレビに向かっていると思います.
ファンとして、できるだけ多くの完全な試合を見たいと思っています.もちろん、新しい時代の良い青年として、他の番組を見たいと思っています.例えば、ニュース聯播(国の大事に関心を持つことを忘れないでください)、非常6+7、スーパーガール、王小娘の「楽しい辞書」など、あなたが好きなテレビ番組の中継スケジュールをすべて知っていたら、合理的に手配しますか?(できるだけ多くの完全な番組を見ることができることを目標にしています)
 
Input
入力データには複数のテストインスタンスが含まれており、各テストインスタンスの最初の行には整数n(n<=100)が1つしかなく、好きな番組の総数を表し、次いでn行のデータであり、各行には2つのデータTi_が含まれている.s,Ti_e(1<=i<=n)は、i番目の番組の開始時間と終了時間をそれぞれ表し、問題を簡略化するために、各時間を正の整数で表す.n=0は入力終了を示し、処理を行わない.
 
Output
各テストインスタンスについて、完全に見られるテレビ番組の個数を出力し、各テストインスタンスの出力は1行を占める.
 
Sample Input
 
   
121 33 40 73 815 1915 2010 158 186 125 104 142 90
 
Sample Output
 
   
5
#include  
#include  
#include  
using namespace std;  
struct stu  
{  
    int star;  
    int end;  
}x[101];  
int cmp(stu a,stu b)  
{  
    return a.end=p)  
        {  
        k++;  
        p=x[j].end;  
        }  
        else continue;      
    }  
    printf("%d
",k); } return 0; }