# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
498070 | MohamedAliSaidane | Job Scheduling (CEOI12_jobs) | C++14 | 155 ms | 14912 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.
#pragma GCC target ("avx2")
#pragma GCC optimization ("O3")
#pragma GCC optimization ("unroll-loops")
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef long double ld;
typedef pair<int,int> pii;
typedef pair<ll,ll> pll;
typedef pair<ld,ld> pld;
typedef vector<int> vi;
typedef vector<ll> vll;
typedef vector<pii> vpi;
typedef vector<pll> vpl;
typedef vector<pld> vpd;
#define pb push_back
#define popb pop_back
#define all(v) (v).begin(),(v).end()
#define ff first
#define ss second
const ll MOD = 1e9 + 7;
const ll INF = 1e18;
int nx[4] = {1,-1,0,0}, ny[4] = {0,0,1,-1};
ll gcd(ll a , ll b) {return b ? gcd(b , a % b) : a ;}
ll lcm(ll a, ll b){return (a / gcd(a, b)) * b;}
int n, d, m;
vpi req;
bool test(int x)
{
int prec = 0;
for(int i= 1; i <= n; i ++)
{
for(int j = prec; j < min(prec + x,m); j ++)
{
if(i - req[j].ff > d)
{
return false;
}
}
prec += x;
}
return true;
}
void solve()
{
cin >> n>> d >> m;
for(int i = 0; i < m; i ++)
{
int x; cin >> x;
req.pb({x,i+1});
}
sort(all(req));
//for(auto e: req)
// cout << e.ff << ' ' << e.ss << '\n';
int debut = 1;
int fin = m;
int ans = m;
while(debut <= fin)
{
int mid = (debut+fin)/2;
if(test(mid))
{
ans = mid;
fin = mid -1;
}
else
debut = mid + 1;
}
cout << ans << '\n';
int cur = 0;
for(int i = 1; i <=n; i ++)
{
for(int j = cur; j < min(cur+ans,m); j ++)
cout << req[j].ss<< ' ';
cur += ans;
cout << "0";
if(i != n)
cout << '\n';
}
}
int main()
{
ios::sync_with_stdio(false);
cin.tie(0); cout.tie(0);
int tt = 1;
while(tt--)
solve();
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |