做的第一个模拟时间轴的问题,关键在于search部分的对于t1,t2的不断变化。
也通过这一题学习了algorithm中的sort函数使用。
/*
ID: alexyua2
PROG: milk2
LANG: C++
*/
#include<fstream>
#include<algorithm>
#include<vector>
using namespace std;
ifstream fin("milk2.in");
ofstream fout("milk2.out");
//ifstream fin("in.txt");
//ofstream fout("out.txt");
struct code
{
int begin_time;
int end_time;
};
bool cmp(const code,const code);
int main()
{
//input and sort
int N;
fin>>N;
vector<code> time;
code temp;
int i;
for(i=0;i<N;i++)
{
fin>>temp.begin_time >>temp.end_time;
time.push_back(temp);
}
sort(time.begin(),time.end(),cmp);
//search
int t1,t2;
int result1=0,result2=0;
t1 = time[0].begin_time;
t2 = time[0].end_time;
for(i=0;i<N;i++)
{
if(t2 >= time[i].begin_time)
{
t2 = max(t2,time[i].end_time);
result1 = max(t2 - t1,result1);
}
else
{
t1 = time[i].begin_time;
result2 = max(result2,t1 - t2);
t2 = time[i].end_time;
}
}
//output
fout<<result1 <<' ' <<result2 <<endl;
//close files
fin.close();
fout.close();
return 0;
}
bool cmp(const code a,const code b)
{
if(a.begin_time != b.begin_time)
return a.begin_time < b.begin_time;
else
return a.end_time < b.end_time;
}