제출 #439490

#제출 시각아이디문제언어결과실행 시간메모리
439490sksusha8853Job Scheduling (CEOI12_jobs)C++17
100 / 100
474 ms25804 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll   long long int
int mod=1000000007;
bool check(vector<int>&a,int n,int d,int m,int M){
	vector<int>v1(n+1,0);
	int z=n;
	for(int i=m;i>=1;i--){
		if(v1[z]==M){
			z--;
		}
		z=min(z,a[i]+d);
		
		if(z<a[i]){
			return false;
			
		}
		else
		v1[z]++;
		
	}
	return true;
}

void solve(){
	int n,d,m;
	cin>>n>>d>>m;
	vector<int>a(m+1);
	vector<pair<int,int>>b(m+1);
	int x,y;
	for(int i=1;i<=m;i++){
		cin>>x;
		a[i]=x;
		b[i]=make_pair(x,i);
		
	}
	sort(a.begin(),a.end());
	sort(b.begin(),b.end());
	int i=1,j=m;
	int ans=0;
	while(i<=j){
		int M=(i+j)/2;
		if(check(a,n,d,m,M)){
			ans=M;
			j=M-1;
		}
		else
		i=M+1;
	}
	cout<<ans<<'\n';
	vector<vector<int>>adj(n+1);
	int z=n;
	for(int i=m;i>=1;i--){
		if(adj[z].size()==ans){
			z--;
		}
		z=min(z,b[i].first+d);
		adj[z].push_back(b[i].second);
		
		
	}
	for(int i=1;i<=n;i++){
		for(int j=0;j<adj[i].size();j++){
			cout<<adj[i][j]<<' ';
		}
		cout<<0<<'\n';
	}


}
int main()
{ios_base::sync_with_stdio(false);cin.tie(0);cin.tie(0);
	//freopen("SKS.in", "r", stdin);
  //freopen("SKS.out", "w", stdout);
	 int t=1;
	 //cin>>t;
	 while(t--)solve();
	 
return 0;}

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

jobs.cpp: In function 'void solve()':
jobs.cpp:54:19: warning: comparison of integer expressions of different signedness: 'std::vector<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   54 |   if(adj[z].size()==ans){
      |      ~~~~~~~~~~~~~^~~~~
jobs.cpp:63:16: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   63 |   for(int j=0;j<adj[i].size();j++){
      |               ~^~~~~~~~~~~~~~
jobs.cpp:30:8: warning: unused variable 'y' [-Wunused-variable]
   30 |  int x,y;
      |        ^
#Verdict Execution timeMemoryGrader output
Fetching results...