QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#865666#9733. Heavy-light DecompositionPurslane#WA 5ms4096kbC++141.1kb2025-01-21 20:57:292025-01-21 20:57:30

Judging History

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

  • [2025-01-21 20:57:30]
  • 评测
  • 测评结果:WA
  • 用时:5ms
  • 内存:4096kb
  • [2025-01-21 20:57:29]
  • 提交

answer

#include<bits/stdc++.h>
#define ffor(i,a,b) for(int i=(a);i<=(b);i++)
#define roff(i,a,b) for(int i=(a);i>=(b);i--)
using namespace std;
const int MAXN=1e5+10;
int T,n,k,l[MAXN],r[MAXN],fa[MAXN];
int main() {
	ios::sync_with_stdio(false),cin.tie(0),cout.tie(0);
	cin>>T;
	while(T--) {
		cin>>n>>k;	
		ffor(i,1,k) cin>>l[i]>>r[i];
		vector<pair<int,int>> st;
		ffor(i,1,k) st.push_back({r[i]-l[i]+1,l[i]});
		sort(st.begin(),st.end());
		ffor(i,1,n) fa[i]=0;
		if(st.size()==1) {ffor(i,1,n) cout<<i-1<<' ';cout<<'\n';continue ;}
		if(st[0].first==st[st.size()-1].first) {cout<<"IMPOSSIBLE\n";continue ;}
		int al=0;
		ffor(i,0,(int)st.size()-1) {
			int l=st[i].second,len=st[i].first;
			ffor(j,l+1,l+len-1) fa[j]=j-1;
			if(i==st.size()-1) continue ;
			if(len!=st[st.size()-1].first) fa[l]=st[st.size()-1].second+st[st.size()-1].first-1-len;
			else fa[l]=st[st.size()-1].second;
			if(len!=st[st.size()-1].first&&fa[l]!=st[st.size()-1].second) al++;
		}
		if(al||st[0].first!=st[st.size()-1].first) ffor(i,1,n) cout<<fa[i]<<' ';
		else cout<<"IMPOSSIBLE";
		cout<<'\n';
	}
	return 0;
}

詳細信息

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 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: 5ms
memory: 4096kb

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:

0 
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 88 89 90 91 92 93 94 95 96 97 98 99 100 101...

result:

wrong answer 3002 should be a heavy child, but the maximum one with size 3000 and 2999 found. (test case 5)