# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
78359 | SamAnd | Job Scheduling (CEOI12_jobs) | C++17 | 280 ms | 33792 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
#define m_p make_pair
const int N=1000006;
struct ban
{
int x,i;
};
bool operator<(const ban& a,const ban& b)
{
if(a.x<b.x)
return true;
if(a.x>b.x)
return false;
return a.i<b.i;
}
int n,d,m;
ban a[N];
vector<int> v[N];
void stgg(int x)
{
int o=1,xx=0;
for(int i=0;i<m;++i)
{
while(a[i].x>o)
{
++o;
xx=0;
}
++xx;
v[o].push_back(a[i].i);
if(xx==x)
{
++o;
xx=0;
}
}
}
bool stg(int x)
{
int o=1,xx=0;
for(int i=0;i<m;++i)
{
while(a[i].x>o)
{
++o;
xx=0;
}
if(o>n)
return false;
if(a[i].x+d<o)
return false;
++xx;
if(xx==x)
{
++o;
xx=0;
}
}
return true;
}
int byn()
{
int l=1,r=m;
while((r-l)>3)
{
int mid=(l+r)/2;
if(stg(mid))
r=mid;
else
l=mid;
}
for(int mid=l;mid<=r;++mid)
if(stg(mid))
return mid;
}
int main()
{
//freopen("input.txt","r",stdin);
scanf("%d%d%d",&n,&d,&m);
for(int i=0;i<m;++i)
{
scanf("%d",&a[i].x);
a[i].i=i+1;
}
sort(a,a+m);
int ans=byn();
stgg(ans);
cout<<ans<<endl;
for(int i=1;i<=n;++i)
{
for(int j=0;j<v[i].size();++j)
cout<<v[i][j]<<' ';
cout<<0<<endl;
}
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |