Submission #160628

#TimeUsernameProblemLanguageResultExecution timeMemory
160628luciocfJob Scheduling (CEOI12_jobs)C++14
100 / 100
377 ms13832 KiB
#include <bits/stdc++.h>

#define ff first
#define ss second

using namespace std;

typedef pair<int, int> pii;

const int maxn = 1e6+10;

int n, d, m;
pii a[maxn];

bool ok(int x)
{
	int cur_d = 1;

	for (int i = 1; i <= m; i++)
	{
		int j = i;
		for (; j <= m && a[j].ff <= cur_d && j-i+1 <= x; j++)
			if (cur_d > a[j].ff+d)
				return 0;

		i = j-1;
		cur_d++;
	}

	return 1;
}

int busca(void)
{
	int ini = 1, fim = m, ans = m;

	while (ini <= fim)
	{
		int mid = (ini+fim)>>1;

		if (ok(mid)) ans = mid, fim = mid-1;
		else ini = mid+1;
	}

	return ans;
}

int main(void)
{
	scanf("%d %d %d", &n, &d, &m);

	for (int i = 1; i <= m; i++)
	{
		scanf("%d", &a[i].ff);
		a[i].ss = i;
	}

	sort(a+1, a+m+1);

	int ans = busca();
	printf("%d\n", ans);

	int cur_d = 1, ind = 1;

	for (int i = 1; i <= n; i++)
	{
		int ant = ind;

		for (; ind <= m && a[ind].ff <= cur_d && ind-ant+1 <= ans; ind++)
			printf("%d ", a[ind].ss);
		printf("0\n");

		cur_d++;
	}
}

Compilation message (stderr)

jobs.cpp: In function 'int main()':
jobs.cpp:50:7: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
  scanf("%d %d %d", &n, &d, &m);
  ~~~~~^~~~~~~~~~~~~~~~~~~~~~~~
jobs.cpp:54:8: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
   scanf("%d", &a[i].ff);
   ~~~~~^~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...