QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#790734#9733. Heavy-light Decompositionucup-team4906#WA 0ms20096kbC++171.3kb2024-11-28 15:03:422024-11-28 15:03:42

Judging History

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

  • [2024-11-28 15:03:42]
  • 评测
  • 测评结果:WA
  • 用时:0ms
  • 内存:20096kb
  • [2024-11-28 15:03:42]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
#define all(x) (x).begin(), (x).end()
#define pb push_back
using ll = long long;
using vi = vector<int>;
using vii = vector<vi>;

#define N 500010


int n, k;
int l[N], r[N];
int p[N];
vector<int>Num[N];

void solve()
{
    cin >> n >> k;
    int mx = 0, num = 0, mxid = 0;
    for (int i = 1; i <= k; i ++)
    {
        cin >> l[i] >> r[i];
        for (int j = l[i] + 1; j <= r[i]; j ++)p[j] = j - 1;
        p[l[i]] = 0;
        if (r[i] - l[i] + 1 > mx)mx = r[i] - l[i] + 1, num = 1, mxid = i;
        else if(r[i] - l[i] + 1 == mx)num ++;
    }
    if (num * mx == n) {cout << "IMPOSSIBLE\n"; return ;}

    for (int i = 1; i <= k; i ++) if (i != mxid)Num[r[i] - l[i] + 1].push_back(i);

    for (int j = r[mxid] - 1, L = 1; j >= l[mxid]; j --, L ++)
    {
        for (auto id : Num[L]) p[l[id]] = j;
    }
    for (int i = 1; i <= n; i ++) cout << p[i] << ' '; cout << '\n';
    for (int i = 1; i <= n; i ++) Num[i].clear();
}

int main()
{
    ios::sync_with_stdio(false);
    cin.tie(nullptr);

    int T = 1;
    cin >> T;
    for (int i = 1; i <= T; i++)
        solve();

    return 0;
}
/*
 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
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

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

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 4 3 7 2 9 10 4 
2 0 2 2 
IMPOSSIBLE

result:

ok Correct. (3 test cases)

Test #2:

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

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 
0 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 76 77 78 79 80 81 82 83 84 85 86 87 ...

result:

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