제출 #1270570

#제출 시각아이디문제언어결과실행 시간메모리
1270570MkswllJob Scheduling (CEOI12_jobs)C++20
65 / 100
45 ms8584 KiB
// I will become better someday. #include <bits/stdc++.h> using namespace std; typedef unsigned int uint; typedef unsigned long long ull; typedef long long ll; typedef long double ld; typedef pair <int, int> pii; typedef pair <ll, int> pli; typedef pair <int, ll> pil; typedef pair <ll, ll> pll; typedef pair <ld, ld> pdd; #define debug(x) cout << '[' << #x << ": " << x << "] " #define cio ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0) #define cases int _; cin >> _; while(_--) #define pb push_back #define eb emplace_back #define space << " " << #define lb lower_bound #define ub upper_bound #define F first #define S second #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define Unique(v) v.erase(unique(all(v)), v.end()) #define mset(x) memset(x, 0, sizeof(x)) #define sflush fflush(stdout) #define cflush cout.flush() #define yes cout << "YES\n" #define no cout << "NO\n" #define lyes cout << "Yes\n" #define lno cout << "No\n" #define nl cout << "\n"; #define vt vector #define ar array #define uid uniform_int_distribution template <typename T> istream& operator >> (istream& in, vector<T>& a){ for(auto &x : a) in >> x; return in; } template <typename T> ostream& operator << (ostream& out, vector<T>& a){ for(auto &x : a) out << x << ' '; return out; } mt19937 rng(chrono::steady_clock::now().time_since_epoch().count()); mt19937_64 rng64(chrono::steady_clock::now().time_since_epoch().count()); ll read(){ int w = 1, c; ll ret; while((c = getchar()) > '9' || c < '0'){ w = (c == '-' ? -1 : 1); } ret = c - '0'; while((c = getchar()) >= '0' && c <= '9'){ ret = ret * 10 + c - '0'; } return ret * w; } ll rd(){ ll in; cin >> in; return in; } void write(ll x){ if(x < 0){ putchar('-'); x = -x; } if(x > 9){ write(x / 10); } putchar(x % 10 + '0'); } const int MAXN = 3e5 + 5, MAXM = 2e5 + 5, INF = 1e9 + 5, MOD = 1e9 + 7; const ll LMOD = (ll) 1e18 + 9; const ll LINF = 1e18 + 5; const ld ep = 1e-8, Pi = acos(-1.0); int n, m, k, x, d; int a[MAXN]; string s; void clear(){ } int main(){ cio; cin >> n >> d >> m; vector<vector<int>> rec(n + 1); for (int i = 1; i <= m; ++i) { cin >> a[i]; rec[a[i]].pb(i); } auto check = [&](int x) -> bool { queue<int> q; for (int i = 1; i <= n; ++i) { for (int j : rec[i]) q.push(j); for (int j = 1; j <= x && !q.empty(); ++j) { q.pop(); } if (!q.empty() && a[q.front()] + d <= i) return 0; } return 1; }; int l = 1, r = m, res = -1; while (l <= r) { int mid = (l + r) >> 1; if (check(mid)) { res = mid; r = mid - 1; } else l = mid + 1; } cout << res << "\n"; queue<int> q; for (int i = 1; i <= n; ++i) { for (int j : rec[i]) q.push(j); for (int j = 1; j <= res && !q.empty(); ++j) { cout << q.front() << " "; q.pop(); } cout << 0 << "\n"; } return 0; }
#Verdict Execution timeMemoryGrader output
Fetching results...