QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#276879 | #7010. Rikka with A Long Colour Palette | ucup-team1209# | TL | 935ms | 26484kb | C++20 | 2.0kb | 2023-12-06 12:10:50 | 2023-12-06 12:10:50 |
Judging History
answer
#include <bits/stdc++.h>
#define cs const
#define pb push_back
using namespace std;
using pi = pair <int, int> ;
cs int N = 4e5 + 5;
int n, k, T;
struct seg {
int l, r, c;
bool operator < (cs seg & x) cs {
return l < x.l;
}
} a[N];
int ans[N];
int b[N], m;
void Main() {
cin >> n >> k;
m = 0;
for(int i = 1; i <= n; i++) {
cin >> a[i].l >> a[i].r;
a[i].c = i;
b[++ m] = a[i].l;
b[++ m] = a[i].r;
}
sort(b + 1, b + m + 1);
m = unique(b + 1, b + m + 1) - b - 1;
sort(a + 1, a + n + 1);
priority_queue <pi> q;
for(int i = 1; i <= k; i++) q.push({0, i});
for(int i = 1; i <= n; i++) {
auto [l, r, c] = a[i];
auto [k, color] = q.top();
q.pop();
k = max(-k, r);
ans[c] = color;
q.push({-k, color});
}
vector <int> d(m + 1);
static vector <int> e[N];
for(int i = 1; i <= n; i++) {
a[i].l = lower_bound(b + 1, b + m + 1, a[i].l) - b;
a[i].r = lower_bound(b + 1, b + m + 1, a[i].r) - b;
++ d[a[i].l];
-- d[a[i].r];
e[a[i].l].pb(ans[a[i].c]);
e[a[i].r].pb(-ans[a[i].c]);
}
int sum = 0;
vector <int> bin(k + 1);
int FLAG = 0;
for(int i = 1; i < m; i++) {
for(auto x : e[i]) {
if(x > 0) FLAG += bin[x] == 0, bin[x] ++;
else bin[- x] --, FLAG -= bin[-x] == 0;
}
d[i] += d[i - 1];
if(d[i] >= k) assert(FLAG == k),
sum += b[i + 1] - b[i];
}
cout << sum << '\n';
for(int i = 1; i <= n; i++) {
cout << ans[i];
if(i < n) cout << ' ';
else cout << '\n';
}
for(int i = 0; i <= n * 2; i++) ans[i] = 0, b[i] = 0, e[i].clear();
}
int main() {
#ifdef zqj
freopen("1.in","r",stdin);
#endif
ios :: sync_with_stdio(0), cin.tie(0);
cin >> T;
while(T--) {
Main();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 15508kb
input:
1 3 2 1 5 2 4 3 6
output:
3 2 1 1
result:
ok 1 cases
Test #2:
score: 0
Accepted
time: 27ms
memory: 16876kb
input:
1000 100 2 22 75 26 45 72 81 29 47 2 97 25 75 82 84 17 56 2 32 28 37 39 57 11 18 6 79 40 68 16 68 40 63 49 93 10 91 55 68 31 80 18 57 28 34 55 76 21 80 22 45 11 67 67 74 4 91 34 35 65 80 21 95 1 52 25 31 2 53 22 96 89 99 7 66 2 32 33 68 75 92 10 84 28 94 12 54 9 80 21 43 51 92 20 97 7 25 17 67 38 10...
output:
99 2 2 2 2 1 2 2 1 2 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 1 2 2 2 2 2 2 2 2 1 2 2 2 2 2 1 1 2 2 2 2 2 2 2 2 2 2 2 2 1 2 2 2 2 1 2 2 2 2 2 99 1 2 2 1 2 2 1 2 2 2 2 1 1 1 2 1 2 1 1 1 2 1 2 2 2 2 2 1 2 1 2 1 2 1 2 2 2 2 2 1 2 1 2 2 2 2 2 ...
result:
ok 1000 cases
Test #3:
score: 0
Accepted
time: 935ms
memory: 26484kb
input:
910 2000 1 291106515 907601188 257183002 580226984 677669535 703754379 578360426 581095542 555843963 776993944 590501585 787712383 268406144 715107805 67868779 956936247 805517214 820489184 673778237 728344625 320030940 533725999 412875077 899787237 376585734 712537132 203142903 420447884 58970816 3...
output:
999533742 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 ...
result:
ok 910 cases
Test #4:
score: -100
Time Limit Exceeded
input:
1000 2000 200000 114320346 414198300 865005596 959003090 308399397 989829253 20993741 74598817 703749014 929597776 326260003 367629651 500954265 989504336 465349215 518791173 33679837 905990625 847419333 879685651 285496458 697635762 845139062 964850697 235259972 953405425 872309480 898530420 302629...
output:
0 199597 198034 199024 199927 198181 198971 198522 198619 199873 198041 199090 198044 199231 198029 199043 199306 198258 199133 198997 199377 199744 199652 199847 198782 199694 199979 199191 198845 199570 199809 198467 199972 199841 198794 199901 199319 198105 199257 198388 199092 198671 199329 1987...