Pagini recente » Cod sursa (job #2383908) | Cod sursa (job #810496) | Cod sursa (job #881865) | Cod sursa (job #688953) | Cod sursa (job #729553)
Cod sursa(job #729553)
#include<iostream>
#include<fstream>
#include<algorithm>
using namespace std;
struct concert {
int a,b;
};
concert v[100001];
int x[100001];
inline bool cmp(concert a, concert b)
{
if(a.b==b.b)
return a.a<b.a;
else return a.b<b.b;
}
int cautarebinara(int p, int q, int a)
{
int mij,poz;
poz=-1;
while(p<=q) {
mij=(p+q)/2;
if(x[mij]>a)
q=mij-1;
else if(x[mij]<a) {
p=mij+1;
poz=mij;
}
else {
poz=mij;
break;
}
}
if(poz<=0)
return poz;
while(x[poz]==x[poz-1])
poz--;
return poz;
}
int main ()
{
int n,i,k,j,poz,nr;
ifstream f("planificare.in");
ofstream g("planificare.out");
f>>n>>k;
for(i=1;i<=n;i++)
f>>v[i].a>>v[i].b;
f.close();
sort(v+1,v+n+1,cmp);
if(k>=n)
g<<n;
else {
for(i=1;i<=k;i++)
x[i]=v[i].b;
nr=k;
for( ;i<=n;i++) {
poz=cautarebinara(1,k,v[i].a);
if(poz>=1) {
x[poz]=v[i].b;
nr++;
}
}
g<<nr;
}
g.close();
return 0;
}