虽然写出来了,但是还是不太理解排序时的if…else…语句唉……等待老师解答!!
#include <iostream>
#include <fstream>
#include <string>
#include <vector>
#include <algorithm>
#include <cstdio>
using namespace std;
typedef struct PartyType
{
int start;
int end;
bool operator < (const PartyType &a) const{
if(start< a.start)
return true;
else
return(end <= a.end);
}
}PT;
int main()
{
ifstream cin ("party.in");
ofstream cout ("estdout.pc2");
vector<PT>party;
PT p1;
int i,n,m,num=0;
while(cin >> n)
{
if(!n) break;
party.clear();
m=0;
for(i=0; i<n; i++)
{
cin >> p1.start >> p1.end;
p1.start *=2;//放大一倍,用整数
p1.end *=2;
party.push_back(p1);
}
sort(party.begin(),party.end());//之前少了个这个……汗……
int tmp =0;
for(i=0; i<n; i++)
{
if(tmp < party[i].start)
tmp= party[i].start;
if(tmp +1 <= party[i].end)
{
tmp++;
m++;
}
}
num++;
printf("On day %d Emma can attend as many as %d parties.\n",num,m);
}
return 0;
}