QOJ.ac

QOJ

ID题目提交者结果用时内存语言文件大小提交时间测评时间
#826392#8936. Team ArrangementhotdogsellerWA 0ms3876kbC++141.6kb2024-12-22 09:50:162024-12-22 09:50:17

Judging History

This is the latest submission verdict.

  • [2024-12-22 09:50:17]
  • Judged
  • Verdict: WA
  • Time: 0ms
  • Memory: 3876kb
  • [2024-12-22 09:50:16]
  • Submitted

answer

#include<bits/stdc++.h>

#define int long long
#define pii pair<int,int>
#define maxn 65
#define double long double
#define INF 1e18
#define mod 998244353

using namespace std;

inline int read(){
	int lre=0,f=1;
	char c=getchar();
	while(!isdigit(c)){
		if(c=='-'){
			f=-1;
		}
		c=getchar();
	}
	while(isdigit(c)){
		lre=(lre<<3)+(lre<<1)+(c-'0');
		c=getchar();
	}
	return lre*f;
}

struct node{
	int l,r;
}arr[maxn];

bool operator <(node a,node b){
	if(a.r==b.r){
		return a.l>b.l;
	}
	return a.r>b.r; 
} 

int n,res=-INF;
int l[maxn],r[maxn];
int w[maxn];

int d[maxn];//划分数

void calc(int m){
	
//	cout<<"for division:";
//	for(int i=1;i<=m;i++){
//		cout<<d[i]<<" ";
//	}
//	cout<<endl;
	
	int it=1;
	for(int i=m;i>=1;--i){
		int cnt=d[i];
	//	cout<<"in "<<d[i]<<endl; 
		while(cnt){
		//	cout<<"it="<<it<<endl;
			if(arr[it].r>=d[i]&&arr[it].l<=d[i]){
				cnt--;
				it++;
			}else{
			//	cout<<"no!"<<endl;
				return;
			}
		}
	}
	
	int lre=0;
	for(int i=1;i<=m;i++)lre+=w[d[i]];
	res=max(res,lre);
}

void dfs(int x,int tmp){
//	cout<<"x="<<x<<endl;
	if(!tmp){
		calc(x-1);
		return;
	}
	for(int i=d[x-1];i<=tmp;i++){
		d[x]=i;
		dfs(x+1,tmp-i);
	}
}

signed main(){
	
	n=read();
	for(int i=1;i<=n;i++){
		arr[i].l=read(),arr[i].r=read();
	}
	sort(arr+1,arr+n+1);
	for(int i=1;i<=n;i++)w[i]=read();
	
//	for(int i=1;i<=n;i++){
//		cout<<"("<<arr[i].l<<" "<<arr[i].r<<")";
//	} 
//	cout<<endl;
	
	d[0]=1;
	dfs(1,n);
	
	if(res==-INF){
		cout<<"impossible"<<endl;
	}else{
		printf("%lld\n",res);
	}
	
	return 0;
}

详细

Test #1:

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

input:

3
2 3
1 2
2 2
4 5 100

output:

9

result:

ok single line: '9'

Test #2:

score: 0
Accepted
time: 0ms
memory: 3876kb

input:

3
1 3
3 3
2 3
1 1 100

output:

100

result:

ok single line: '100'

Test #3:

score: 0
Accepted
time: 0ms
memory: 3504kb

input:

2
1 1
2 2
1 1

output:

impossible

result:

ok single line: 'impossible'

Test #4:

score: 0
Accepted
time: 0ms
memory: 3804kb

input:

3
2 3
1 2
2 2
-100 -200 100000

output:

-300

result:

ok single line: '-300'

Test #5:

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

input:

9
1 4
2 5
3 4
1 5
1 1
2 5
3 5
1 3
1 1
1 1 1 1 1 1 1 1 1

output:

5

result:

wrong answer 1st lines differ - expected: '6', found: '5'