区間スケジューリング 勉強 | プログラミング初心者

プログラミング初心者

プログラミング初心者のメモ

#include < iostream >
#include< algorithm >
using namespace std;
int s[1000], t[1000],n;
pair< int, int > p[1000];
int main(){
cin >> n;
for (int i = 0; i < n; i++){
cin >> s[i] >> t[i];
p[i].first = t[i];
p[i].second = s[i];

}
sort(p, p + n);
int ans = 0, t = 0;
for (int i = 0; i < n; i++){
if (t < p[i].second){
t = p[i].first;
ans++;
}
}

cout << ans;
getchar();
getchar();
return 0;


}

終了時間が早い順いしごとを並び替え次の仕事の開始時間が前の仕事の終了時間よりあとという条件のもとで終了時間の早い順に仕事を選んでいく