QOJ.ac
QOJ
ID | 题目 | 提交者 | 结果 | 用时 | 内存 | 语言 | 文件大小 | 提交时间 | 测评时间 |
---|---|---|---|---|---|---|---|---|---|
#155597 | #7010. Rikka with A Long Colour Palette | PetroTarnavskyi | AC ✓ | 968ms | 15284kb | C++17 | 1.5kb | 2023-09-01 21:03:10 | 2023-09-01 21:03:11 |
Judging History
answer
#include <bits/stdc++.h>
using namespace std;
#define FOR(i, a, b) for (int i = (a); i < (b); i++)
#define RFOR(i, a, b) for (int i = (a) - 1; i >= (b); i--)
#define FILL(a, b) memset(a, b, sizeof(a))
#define SZ(a) int(a.size())
#define ALL(a) a.begin(), a.end()
#define PB push_back
#define MP make_pair
#define F first
#define S second
typedef long long LL;
typedef vector<int> VI;
typedef pair<int, int> PII;
typedef double db;
void solve()
{
int n, k;
cin >> n >> k;
k = min(n + 1, k);
unordered_set<int> s;
s.reserve(4 * k);
FOR (i, 0, k) s.insert(i + 1);
VI l(n), r(n);
VI ans(n);
vector<PII> v;
set<PII> m;
FOR (i, 0, n)
{
cin >> l[i] >> r[i];
v.PB({l[i], (i + 1)});
v.PB({r[i], -(i + 1)});
}
sort(ALL(v));
int res = 0;
int p = 0;
FOR (i, 0, 2 * n)
{
if (SZ(s) == 0) res += v[i].F - p;
p = v[i].F;
if (v[i].S < 0)
{
int j = abs(v[i].S) - 1;
if (m.count(MP(v[i].F, ans[j])))
s.insert(ans[j]);
m.erase(MP(v[i].F, ans[j]));
}
else
{
int c = -1;
int j = v[i].S - 1;
if (SZ(s))
{
c = *s.begin();
s.erase(s.begin());
m.insert({r[j], c});
}
else
{
auto it = m.begin();
c = it->S;
int x = max(it->F, r[j]);
m.erase(m.begin());
m.insert({x, c});
}
ans[j] = c;
}
}
cout << res << '\n';
FOR (i, 0, n)
{
if(i) cout << ' ';
cout << ans[i];
}
cout << '\n';
}
int main()
{
ios::sync_with_stdio(0);
cin.tie(0);
int t;
cin >> t;
while (t--)
{
solve();
}
}
这程序好像有点Bug,我给组数据试试?
詳細信息
Test #1:
score: 100
Accepted
time: 1ms
memory: 3520kb
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: 20ms
memory: 3420kb
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 1 1 1 1 2 1 1 2 1 1 1 1 1 1 2 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 1 1 1 1 1 1 2 1 2 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 1 1 1 2 1 1 1 1 1 2 2 1 1 1 1 1 1 1 1 1 1 1 1 2 1 1 1 1 2 1 1 1 1 1 99 2 1 1 2 1 1 2 1 1 1 1 2 1 2 1 1 1 2 2 2 1 2 1 1 1 1 1 2 1 2 1 2 1 2 1 1 1 1 1 2 1 2 1 1 1 1 1 ...
result:
ok 1000 cases
Test #3:
score: 0
Accepted
time: 795ms
memory: 15284kb
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: 0
Accepted
time: 968ms
memory: 3708kb
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 1636 1671 1210 1931 1215 1508 1477 1200 1879 1892 1252 1928 1347 1262 1895 1771 1530 1267 1192 1450 1764 1685 1855 1844 1720 1981 1315 1116 1685 1821 1286 1974 1849 1745 1907 1444 1522 1886 1900 1683 1062 1418 1220 1274 1577 1758 1518 1881 1574 1099 1306 1465 1411 1074 1415 1836 1965 1363 1247 137...
result:
ok 1000 cases