Submission #537124

#TimeUsernameProblemLanguageResultExecution timeMemory
537124mgl_diamondJob Scheduling (CEOI12_jobs)C++14
55 / 100
276 ms31132 KiB
#include<bits/stdc++.h>
using namespace std;

#define rep(i, l, r) for(int i=l; i<=r; ++i)
#define fod(i, l, r) for(int i=r; i>=l; --i)
#define ll long long 
#define ii pair<ll, ll>
#define fi first
#define se second

template<class T> bool umax(T &a, T b) { if (a<b) { a=b; return 1; } return 0; }
template<class T> bool umin(T &a, T b) { if (a>b) { a=b; return 1; } return 0; }

void setIO(string name) {
	ios_base::sync_with_stdio(0); cin.tie(0);
	freopen((name+".in").c_str(),"r",stdin);
	freopen((name+".out").c_str(),"w",stdout);
}

const double oo=1e18;
int n, d, m;
vector<ii> stX(1000001);
vector<int> ans[100001];

bool f(int x) {
	for(int day=1, j=1; day<=m && j<=n; ++day)
		for(int rb=min(n, j+x-1); j<=rb; ++j)
			if (day>stX[j].fi+d)
				return 0;
	return 1;
}

void trace(int x) {
	for(int day=1, j=1; day<=m && j<=n; ++day)
		for(int rb=min(n, j+x-1); j<=rb; ++j)
			ans[day].push_back(stX[j].se);
}

int main() {
	cin.tie(0) -> sync_with_stdio(0);
	cout.tie(0);
	
	cin >> m >> d >> n;
	for(int i=1; i<=n; ++i) { 
		cin >> stX[i].fi;
		stX[i].se=i;
	}

	sort(stX.begin()+1, stX.begin()+n+1);

	int lb=0, rb=n+1, mb;
	while (lb<rb) {
		mb=(lb+rb)>>1;
		if (f(mb))
			rb=mb;
		else
			lb=mb+1;
	}

	trace(lb);
	cout << lb << '\n';
	for(int i=1; i<=m; ++i) {
		for(int j: ans[i])
			cout << j << ' ';
		cout << "0\n";
	}
}

Compilation message (stderr)

jobs.cpp: In function 'void setIO(std::string)':
jobs.cpp:16:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   16 |  freopen((name+".in").c_str(),"r",stdin);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
jobs.cpp:17:9: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   17 |  freopen((name+".out").c_str(),"w",stdout);
      |  ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...