Submission #304881

#TimeUsernameProblemLanguageResultExecution timeMemory
304881waterfallJob Scheduling (CEOI12_jobs)C++11
100 / 100
942 ms31264 KiB
#include<bits/stdc++.h> using namespace std; #define ff first #define ss second #define int long long #define pb push_back #define mp make_pair #define pii pair<int,int> #define vi vector<int> #define mii map<int,int> #define pqb priority_queue<int> #define pqs priority_queue<int,vi,greater<int> > #define setbits(x) __builtin_popcountll(x) #define zrobits(x) __builtin_ctzll(x) #define mod 1000000007 #define inf 1e18 #define ps(x,y) fixed<<setprecision(y)<<x #define mk(arr,n,type) type *arr=new type[n]; #define w(x) int x; cin>>x; while(x--) vector<int> v[100005]; int n, m, d; bool works(int num, pair<int, int> requests[]) { int curDay = 1; for(int i = 0; i < m; i++) { curDay = max (curDay, requests[i].first); while(v[curDay].size() >= num) { curDay++; if(curDay > n) { return false; } } if(curDay > n || curDay - requests[i].first > d) { return false; } else { v[curDay].push_back(requests[i].second); } } return true; } int32_t main() { cin >> n >> d >> m; pair<int, int> requests[m]; for(int i = 0; i < m; i++) { cin >> requests[i].first; requests[i].second = i + 1; } sort(requests, requests + m); int lower = 1; int upper = m; int ans = m; while(lower < upper) { int mid = (lower + upper ) / 2; if(works(mid, requests)) { upper = mid; ans = mid; } else { lower = mid + 1; } for(int i = 1; i <= n; i++) { v[i].clear(); } } cout << ans << endl; works(ans, requests); for(int i = 1; i <= n; i++) { for(int j = 0; j < v[i].size(); j++) { cout << v[i][j] << " "; } cout << 0 << endl; } return 0; }

Compilation message (stderr)

jobs.cpp: In function 'bool works(long long int, std::pair<long long int, long long int>*)':
jobs.cpp:31:32: warning: comparison of integer expressions of different signedness: 'std::vector<long long int>::size_type' {aka 'long unsigned int'} and 'long long int' [-Wsign-compare]
   31 |         while(v[curDay].size() >= num)
      |               ~~~~~~~~~~~~~~~~~^~~~~~
jobs.cpp: In function 'int32_t main()':
jobs.cpp:93:26: warning: comparison of integer expressions of different signedness: 'long long int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   93 |         for(int j = 0; j < v[i].size(); j++)
      |                        ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...