代码找错,急
  • 板块灌水区
  • 楼主rangers_meteor
  • 当前回复0
  • 已保存回复0
  • 发布时间2022/7/14 16:41
  • 上次更新2023/10/27 20:22:21
查看原帖
代码找错,急
679336
rangers_meteor楼主2022/7/14 16:41

题目描述 有一家餐馆有k张桌子,第i张桌子最大可以坐下Ri个人。现在来了n伙顾客,第 i 群顾客共有Ci个人,将会带来收益Pi。每张桌子只能安排一群顾客,而且同一群顾客都要坐在一张桌子上。问接受哪几群顾客,并分别安排在哪几张桌子可以带来最大的收益。

输入格式 第一行包含一个整数n(1<=n<=1000)。

接下来有n行,每行有两个整数ci,pi。

接下来一行一个整数k(1<=k<=1000)。

最后一行包含k个整数r1..rk。

输出格式 输出一个数,表示最大的收益

样例输入 3

10 50

2 100

5 30

3

4 6 9

样例输出 130

时空限制 2s,512M

可以帮我看一下我的代码有什么问题吗?急

#include<bits/stdc++.h>
using namespace std;
const int maxn=1005;
struct Node{
    int x;
    int y;
    int z;
}a[1005];
struct Node1{
    int x;
    int r;
    int vis;
}b[1005];
struct Node2{
    int a;
    int b;
}ans[1005];
bool cmp(Node i,Node j){
    if(i.z==j.z){
    	return i.y<j.y;
	}
    return i.z>j.z;
}
bool cmp1(Node1 i,Node1 j){
    return i.r<j.r;
}
int main(){
    int n,k;
    scanf("%d",&n);
    for(int i=0;i<n;i++){
        scanf("%d%d",&a[i].y,&a[i].z);
        a[i].x=i+1;
    }
    scanf("%d",&k);
    for(int i=0;i<k;i++){
    	b[i].x=i+1;
        b[i].vis=0;
        scanf("%d",&b[i].r);
    }
    sort(a,a+n,cmp);
    sort(b,b+k,cmp1);
    int cnt=0,sum=0;
    for(int i=0;i<n;i++){
        for(int j=0;j<k;j++){
            if(b[j].vis==0){
                sum+=a[i].z;
                ans[cnt].a=a[i].x;
                ans[cnt].b=b[j].x;
                b[j].vis=1;
                cnt++;
                break;
            }
        }
    }
    printf("%d\n",sum);
    return 0;
}
2022/7/14 16:41
加载中...