UOJ Logo goodguy的博客

博客

*跪求大佬解答*

2021-01-21 18:20:53 By goodguy

问题描述

一天,poorpool让一群人上台领奖。poorpool所在的学校非常有钱,他们的奖励是这样的:

*竞赛得奖。省一1000元,省二500元,省三300元。*

*考试得奖。如果是年级一百及以前800元,否则如果是二百及以前600元,否则如果是三百及以前400元。*

*干部得奖。是学生会干部则150元,是班干部则125元。*

为了增加趣味性,所有编号末尾是3的学生只拿233元,无论他是什么身份。

输入格式

第一行是学生人数nn。

下来nn行,每行先是这个学生的编号,然后有三个整数:

第一个代表竞赛拿了几等奖,0代表未得,123分别对应省一二三。

第二个代表考试在年级里排了多少名。

第三个代表干部情况,0代表不是干部,1代表是学生会干部,2代表是班干部,3代表既是学生会干部又是班干部。

代码如下:

#include "bits/stdc++.h"

using namespace std;

int n,x[50005],y[50005],a,b,c,d;

int main(){

    scanf("%d",&n);

    for(int i=1;i<=n;i++){

        scanf("%d %d %d %d",a,b,c,d);

        x[i]=a;

        switch(b){

            case 1:

                y[i]+=1000;break;

            case 2:

                y[i]+=500;break;

            case 3:

                y[i]+=300;break;

            default:

                break;

            }

        if(c<=100) y[i]+=800;

        else if(c>100&&c<=200) y[i]+=600;

        else if(c>200&&c<=300) y[i]+=400;

        switch(d){

            case 1:

                y[i]+=150;break;

            case 2:

                y[i]+=125;break;

            case 3:

                y[i]+=275;break;

            default:

                break;

        }

        if(a%10==3) y[i]=233;

        }

        for(int i=1;i<=n;i++){

            if(y[i]>=700||y[i]==233)

            scanf("%d %d",y[i],x[i]);

        }

    return 0;

}

为什么会停止工作啊啊啊!!!

评论

NaCl
scanf 应传入指针。

发表评论

可以用@mike来提到mike这个用户,mike会被高亮显示。如果你真的想打“@”这个字符,请用“@@”。