제출 #870307

#제출 시각아이디문제언어결과실행 시간메모리
870307nhatvpmJob Scheduling (CEOI12_jobs)C++17
100 / 100
199 ms13908 KiB
#include <bits/stdc++.h>
using namespace std;

using ll = long long;
using ld=long double;

void setIO(string name) {
	freopen((name+".in").c_str(),"r",stdin);
	freopen((name+".out").c_str(),"w",stdout);
}

int dx[]={1,-1,0,0},dy[]={0,0,1,-1};

void solve(){
	int n,d,m;
	cin>>n>>d>>m;
	vector<pair<int,int>> a(m);
	for (int i=0;i<m;i++){
		int x;
		cin>>x;
		a[i]={x,i+1};
	}
	sort(a.begin(),a.end());
	int lo=1,hi=m;
	while (lo<hi){
		int mid=lo+(hi-lo)/2;
		bool ok=1;
		for (int i=1,x=0;i<=n&&x<m;i++){
			int y=x;
			for (int j=y;j<=min(m-1,y+mid-1);j++){
				if (a[j].first>i) break;
				if (a[j].first+d<i){
					ok=0;
					goto esc;
				}
				x++;
			}
		}
		esc:
		if (ok) hi=mid;
		else lo=mid+1;
	}
	cout<<lo<<'\n';
	int x=0;
	for (int i=1;i<=n;i++){
		if (x==m){
			cout<<"0\n";
			continue;
		}
		int k=min(m-1,x+lo-1);
		for (int j=x;j<=k;j++){
			if (a[j].first>i) break;
			cout<<a[j].second<<' ';
			x++;
		}
		
		cout<<"0\n";
	}
	
	
	
	
	
	
	
	
}


int main(){
	//setIO("");
	ios_base::sync_with_stdio(0);
    cin.tie(0);
	int tc=1;
	//cin>>tc;
	while (tc--){
		solve();
	}
}

컴파일 시 표준 에러 (stderr) 메시지

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