제출 #939427

#제출 시각아이디문제언어결과실행 시간메모리
939427JakobZorzJob Scheduling (CEOI12_jobs)C++17
100 / 100
258 ms20656 KiB
#include<iostream> #include<vector> #include<queue> #include<stack> #include<algorithm> #include<limits.h> #include<math.h> #include<map> #include<set> #include<unordered_map> #include<unordered_set> #include<iomanip> #include<cstring> #include<random> typedef long long ll; typedef unsigned long long ull; typedef long double ld; using namespace std; int n,d,m; vector<int>jobs[100000]; vector<vector<int>>get(int k){ vector<vector<int>>res(n); queue<pair<int,int>>q; for(int i=0;i<n;i++){ for(int j:jobs[i]){ q.push({i+d,j}); } if(q.size()&&q.front().first<i) return {}; for(int j=0;j<k&&q.size();j++){ res[i].push_back(q.front().second); q.pop(); } } return res; } void solve(){ cin>>n>>d>>m; for(int i=1;i<=m;i++){ int a; cin>>a; jobs[a-1].push_back(i); } int l=0,r=m; while(l<r-1){ int mid=(l+r)/2; if(get(mid).empty()){ l=mid; }else{ r=mid; } } cout<<r<<"\n"; auto res=get(r); for(auto i:res){ for(auto j:i){ cout<<j<<" "; } cout<<"0\n"; } } int main(){ ios::sync_with_stdio(false);cout.tie(NULL);cin.tie(NULL); //freopen("/Users/jakob/cp_testing/test.txt","r",stdin);freopen("output.out","w",stdout); int t=1;//cin>>t; while(t--)solve(); return 0; } /* 8 2 12 1 2 4 2 1 3 5 6 2 3 6 4 */
#Verdict Execution timeMemoryGrader output
Fetching results...