QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#875993#9733. Heavy-light DecompositionyuanruiqiWA 0ms3840kbC++261.1kb2025-01-30 15:26:022025-01-30 15:26:03

Judging History

你现在查看的是最新测评结果

  • [2025-01-30 15:26:03]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:3840kb
  • [2025-01-30 15:26:02]
  • 提交

answer

#include <bits/stdc++.h>
using namespace std;
using i64 = long long;
using pii = pair<int, int>;
constexpr int maxn = 100000 + 10;
pii p[maxn];
int a[maxn];
void solve()
{
    int n, k;
    cin >> n >> k;
    for (int i=1;i<=k;++i) cin >> p[i].first >> p[i].second;
    sort(p + 1, p + k + 1, [](pii x, pii y) {return x.second - x.first > y.second - y.first;});
    if (p[1].second - p[1].first == p[k].second - p[k].first) return cout << "IMPOSSIBLE\n", void();
    if (p[1].second - p[1].first == p[k].second - p[k].first + 1 && p[1].second - p[1].first == p[2].second - p[2].first) return cout << "IMPOSSIBLE\n", void();
    for (int i=1;i<=k;++i)
        for (int j=p[i].first+1;j<=p[i].second;++j) a[j] = j - 1;
    a[p[1].first] = 0;
    for (int i=2;i<=k;++i)
        if (p[i].second - p[i].first >= p[1].second - p[1].first - 1)
            a[p[i].first] = p[1].first;
        else a[p[i].first] = p[1].first + 1;
    for (int i=1;i<=n;++i) cout << a[i] << ' ';
    cout << '\n';
}
int main()
{
    ios::sync_with_stdio(0);
    cin.tie(0);
    int t;
    cin >> t;
    while (t--) solve();
    return 0;
}

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 0ms
memory: 3712kb

input:

3
12 5
1 5
9 11
7 8
6 6
12 12
4 3
1 1
4 4
2 3
2 2
1 1
2 2

output:

0 1 2 3 4 2 2 7 2 9 10 2 
2 0 2 2 
IMPOSSIBLE

result:

ok Correct. (3 test cases)

Test #2:

score: -100
Wrong Answer
time: 0ms
memory: 3840kb

input:

10
1 1
1 1
100000 1
1 100000
12 4
1 3
4 6
7 9
10 12
6 3
4 6
2 3
1 1
8999 3
1 3000
3001 6000
6001 8999
14 4
1 3
4 6
7 10
11 14
17 5
1 3
4 6
7 10
11 14
15 17
19999 2
1 9999
10000 19999
1 1
1 1
5 3
1 1
2 3
4 5

output:

IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
5 4 2 0 4 5 
IMPOSSIBLE
IMPOSSIBLE
IMPOSSIBLE
10000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75...

result:

wrong answer Case 1, jury find a solution while participant not. (test case 1)