做的第一个模拟时间轴的问题,关键在于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;
}
本文介绍了一个关于模拟时间轴的问题解决方法,重点在于如何通过不断调整时间范围来找到最大连续区间及空闲时间。文中使用C++实现了解决方案,并详细讲解了sort函数的应用。
925

被折叠的 条评论
为什么被折叠?



