답안 #36684

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
36684 2017-12-13T08:15:59 Z RockyB Job Scheduling (CEOI12_jobs) C++14
0 / 100
676 ms 26224 KB
/// In The Name Of God

#pragma GCC optimize("Ofast")
#pragma GCC target("sse,sse2,sse3,sse3,sse4,popcnt,abm,mmx")

#include <bits/stdc++.h>

#define f first
#define s second

#define pb push_back
#define pp pop_back
#define mp make_pair

#define sz(x) (int)x.size()
#define sqr(x) ((x) * 1ll * (x))
#define all(x) x.begin(), x.end()

#define Kazakhstan ios_base :: sync_with_stdio(0), cin.tie(0), cout.tie(0);

#define nl '\n'
#define ioi exit(0);

typedef long long ll;
typedef long double ld;
typedef unsigned long long ull;

const int N = (int)1e6 + 7, inf = (int)1e9 + 7, mod = (int)1e9 + 7;
const ll linf = (ll)1e18 + 7;
const int dx[] = {-1, 0, 1, 0, 1, -1, -1, 1}, dy[] = {0, 1, 0, -1, 1, -1, 1, -1};

using namespace std;

int n, d, m;
pair <int, int> a[N];
int cnt[N];

bool check(int total) {
	memset(cnt, 0, sizeof(cnt));
	for (int i = 1; i <= m; i++) {
		bool ok = 0;
		for (int j = a[i].f; j <= a[i].f + d; j++) {
			if (cnt[j] < total) {
				cnt[j]++;
				ok = 1;
				break;
			}
		}
		if (!ok) return 0;
	}
	return 1;
}
int main() {
	#ifdef IOI2018
		freopen ("in.txt", "r", stdin);
	#endif
	Kazakhstan
	cin >> n >> d >> m;
	assert(1 <= n && n <= (int)1e5);
	assert(1 <= m && m <= (int)1e6);
	for (int i = 1; i <= m; i++) {
		cin >> a[i].f;
		a[i].s = i;
		assert(a[i].f + d <= n);
	}
	sort (a + 1, a + 1 + m);
	int l = 1, r = m, res = m;
	while (l <= r) {
		int mid = (l + r) / 2;
		if (check(mid)) res = mid, r = mid - 1;
		else l = mid + 1;
	}
	{
		memset(cnt, 0, sizeof(cnt));
		vector < pair <int, int> > ans;
		for (int i = 1; i <= m; i++) {
			for (int j = a[i].f; j <= a[i].f + d; j++) {
				if (cnt[j] < res) {
					cnt[j]++;
					ans.pb({j, a[i].s});
					break;
				}
			}
		}
		cout << res << nl;
		sort(all(ans));
		int ptr = 0;
		for (int i = 1; i <= n; i++) {
			while (ptr < sz(ans) && ans[ptr].f < i) ptr++;
			while (ptr < sz(ans) && ans[ptr].f == i) {
				cout << ans[ptr++].s << ' ';
			}
			cout << 0 << nl;
		}
	}
	ioi
}
# 결과 실행 시간 메모리 Grader output
1 Runtime error 33 ms 15472 KB Execution killed because of forbidden syscall writev (20)
2 Runtime error 36 ms 15472 KB Execution killed because of forbidden syscall writev (20)
3 Runtime error 26 ms 15472 KB Execution killed because of forbidden syscall writev (20)
4 Runtime error 29 ms 15472 KB Execution killed because of forbidden syscall writev (20)
5 Runtime error 39 ms 15472 KB Execution killed because of forbidden syscall writev (20)
6 Runtime error 29 ms 15472 KB Execution killed because of forbidden syscall writev (20)
7 Runtime error 26 ms 15472 KB Execution killed because of forbidden syscall writev (20)
8 Runtime error 43 ms 15472 KB Execution killed because of forbidden syscall writev (20)
9 Runtime error 36 ms 15472 KB Execution killed because of forbidden syscall writev (20)
10 Runtime error 46 ms 15472 KB Execution killed because of forbidden syscall writev (20)
11 Runtime error 43 ms 15472 KB Execution killed because of forbidden syscall writev (20)
12 Runtime error 129 ms 17008 KB Execution killed because of forbidden syscall writev (20)
13 Runtime error 106 ms 20080 KB Execution killed because of forbidden syscall writev (20)
14 Runtime error 676 ms 20080 KB Execution killed because of forbidden syscall writev (20)
15 Runtime error 166 ms 20080 KB Execution killed because of forbidden syscall writev (20)
16 Runtime error 193 ms 26224 KB Execution killed because of forbidden syscall writev (20)
17 Runtime error 289 ms 26224 KB Execution killed because of forbidden syscall writev (20)
18 Runtime error 309 ms 26224 KB Execution killed because of forbidden syscall writev (20)
19 Runtime error 303 ms 26224 KB Execution killed because of forbidden syscall writev (20)
20 Runtime error 299 ms 26224 KB Execution killed because of forbidden syscall writev (20)