#include<bits/stdc++.h>
using namespace std;
ifstream f ("date.in");
ofstream g ("date.out");
int v[10001],maxi,i,maxi1,n,k,mini=INT_MAX,j;
struct interval
{
int stg,dr;
} x,a[10001];
int main()
{
f>>n;
for(i=1;i<=n;i++)
{
f>>x.stg>>x.dr;
a[i].stg=x.stg;
a[i].dr=x.dr;
v[x.stg]++;
v[x.dr]-=1;
if (maxi<x.dr)
maxi=x.dr;
}
for(i=1;i<=maxi;i++)
v[i]+=v[i-1];
for(i=1;i<=maxi;i++)
{
if (v[i]>maxi1)
maxi1=v[i];
}
g<<maxi1<<'\n';
for(i=1;i<=n;i++)
for(j=1;j<=n;j++)
if (a[i].stg<a[j].stg)
{
swap(a[i].stg,a[j].stg);
swap(a[i].dr,a[j].dr);
}
for(i=1;i<=n;i++)
for(j=i;j<=n;j++)
if (a[i].dr<a[j].stg)
{
k++;
g<<a[i].stg<<" "<<a[i].dr;
g<<'\n';
i=j;
}
if (a[n].stg>a[k].dr)
{
g<<a[n].stg<<" "<<a[n].dr;
g<<'\n';
k++;
}
g<<k;
}
Итак, моя программа работает нормально, но я хочу ее оптимизировать. Я хочу использовать функцию сортировки (не qsort) вместо пузырьковой сортировки, как эта сортировка (a+1,a+n+1, comp), но я не знаю, как написать функцию comp для этого сценария. Ваша помощь будет очень признательна.
Решение оказалось не таким сложным:
bool cmp( interval a, interval b )
{
return (a.stg < b.stg && a.dr < b.dr);
}