Untitled
unknown
plain_text
3 years ago
2.1 kB
9
Indexable
#include <bits/stdc++.h>
using namespace std;
vector<pair<int,int> > v;
vector<int> v1;
int c, nrProf, nrSali, x, y, cnt, nr_sali_libere, a=-1, b=-1, maxim, ans;
bool cmp(pair<int,int> x, pair<int,int> y){
return (x.second<y.second) || (x.second==y.second && x.first>y.first);
}
bool cmp1(pair<int, int> x, pair<int, int> y){
return (x.first<y.first) || (x.first==y.first && x.second<y.second);
}
bool verif(int val){
for(int i=0; i<v.size(); i++){
v[i].second=val+v[i].first;
}
for(int i=0; i<nrSali; i++){
b=v[i].second;
for(int j=i+nrSali; j<nrProf; j+=nrSali){
if(b>v[j].first){
return false;
}
b=v[j].second;
}
}
return true;
}
void bs(int st, int dr){
int mij=(st+dr)/2;
if(st>=dr){
return;
}
if(verif(mij)==true){
ans=mij;
bs(mij+1, dr);
}
else{
bs(st, mij-1);
}
}
int main()
{
ifstream fin("cursuri.in");
ofstream fout("cursuri.out");
fin>>c;
fin>>nrProf>>nrSali;
nr_sali_libere=nrSali;
for(int i=0; i<nrProf; i++){
fin>>x>>y;
v.push_back({x, y});
}
if(c==1){
sort(v.begin(), v.end(), cmp);
// for(int i=0; i<v.size(); i++){
// fout<<v[i].first<<" "<<v[i].second<<endl;
// }
for(int i=0; i<min(nrProf, nrSali); i++){
v1.push_back(v[i].second);
}
cnt=nrSali;
for(int i=nrSali; i<nrProf; i++){
for(int j=0; j<nrSali; j++){
if(v1[j]<=v[i].first){
v1[j]=v[i].second;
cnt++;
}
}
}
fout<<cnt;
}
else if(c==2){
sort(v.begin(), v.end(), cmp1);
for(int i=0; i<v.size(); i++){
if(v[i].second-v[i].first>maxim){
maxim=v[i].second-v[i].first;
}
}
bs(1, maxim);
fout<<ans;
}
return 0;
}
Editor is loading...