Vijos P1001 누가 가장 많은 장학금 을 받 았 습 니까?

P1001 누가 가장 많은 장학금 을 받 았 습 니까?
Accepted
태그: NOIP 향상 그룹 2005 [태그 표시]
묘사 하 다.
모 학교의 관례 는 매 학기 기말고사 이후 장학금 을 지급 하 는 것 이다.지 급 된 장학금 은 모두 다섯 가지 로 받 는 조건 이 각각 다르다.
1) 원사 장학금 은 1 인당 8000 위안 이 고 기 말 평균 성적 이 80 점 (> 80) 보다 높 으 며 이번 학기 내 에 1 편 또는 1 편 이상 의 논문 을 발표 한 학생 은 모두 받 을 수 있다.
2) 5 · 4 장학금 은 1 인당 4000 위안 이 고 기 말 평균 성적 이 85 점 (> 85) 보다 높 으 며 학급 평가 성적 이 80 점 (> 80) 보다 높 은 학생 은 모두 받 을 수 있다.
3) 성적 우수 상 은 1 인당 2000 위안 이 고 기 말 평균 성적 이 90 점 (> 90) 이상 인 학생 은 모두 받 을 수 있다.
4) 서부 장학금 은 1 인당 1000 위안 이 고 기 말 평균 성적 이 85 점 (> 85) 보다 높 은 서부 성 학생 은 모두 받 을 수 있다.
5) 학급 공헌 상 은 1 인당 850 위안 이 고 학급 평가 성적 이 80 점 (> 80) 이상 인 학생 간부 가 모두 획득 할 수 있다.
조건 만 맞 으 면 상 을 받 을 수 있 고 장학금 당 수상자 수 는 제한 이 없 으 며 학생 1 명당 여러 장학금 을 동시에 받 을 수 있다.예 를 들 어 야 오 린 의 기 말 평균 성적 은 87 점 이 고 반 평가 성적 은 82 점 이 며 그 는 학생 간부 이기 때문에 그 는 5, 4 장학금 과 반 공헌 상 을 동시에 받 을 수 있 고 상금 총 수 는 4850 위안 이다.
현재 몇 명의 학생 들 의 관련 데 이 터 를 제시 하고 어떤 학생 들 이 받 은 상금 총수 가 가장 높 은 지 계산 하 세 요.
격식.
입력 형식
입력 한 첫 줄 은 하나의 정수 N (1 < = N < = 100) 으로 학생 의 총 수 를 나타 낸다.다음 N 행 각 행 은 한 학생 의 데이터 로 왼쪽 에서 오른쪽으로 이름, 기 말 평균 성적, 학급 평가 성적, 학생 간부 인지, 서부 성 학생 인지, 발표 한 논문 수 순 이 었 다.이름 은 대소 문자 영문 자모 로 구 성 된 길이 가 20 을 넘 지 않 는 문자열 (빈 칸 포함 하지 않 음) 입 니 다.기 말 평균 성적 과 학급 평가 성적 은 모두 0 에서 100 사이 의 정수 (0 과 100 포함) 이다.학생 간부 인지, 서부 성 학생 인지 각각 한 글자 로 표시 하고 Y 는 'N' 이 아니 라 고 표시 한다.발 표 된 논문 수 는 0 에서 10 의 정수 (0 과 10 포함) 이다.서로 인접 한 데이터 항목 사이 에 빈 칸 으로 구분 합 니 다.
출력 형식
수출 은 세 줄 을 포함 하고 첫 줄 은 가장 많은 보 너 스 를 받 은 학생 의 이름 이 며 두 번 째 줄 은 이 학생 이 받 은 상금 총수 이다.두 명 이나 두 명 이상 의 학생 이 가장 많은 보 너 스 를 받 으 면 입력 파일 에 최초의 학생 이름 을 출력 한다.세 번 째 줄 은 이 N 명의 학생 이 받 은 장학금 의 총수 이다.
샘플 1
샘플 입력 1 [복사]
4
YaoLin 87 82 Y N 0
ChenRuiyi 88 78 N Y 1
LiXin 92 88 N N 0
ZhangQin 83 87 Y N 1

샘플 출력 1 [복사]
ChenRuiyi
9000
28700

제한 하 다.
1s
근원
NOIp 2005 첫 번 째 문제.
간단하게 물 문 제 를 모 의 하고 절차 에 따라 한 걸음 한 걸음 하면 됩 니 다!!
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
int main()
{
    int N,Terminal[101],Discussion[101];
    char Iscadre[101],IsWestProvince[101];
    char name[101][21];int papers[101];
    int prize[101],allprize=0,maxprize=0,flag=0;
    cin>>N;memset(prize,0,sizeof(prize));
    for(int i=0;i<N;i++)
    {
        cin>>name[i];
        cin>>Terminal[i];
        cin>>Discussion[i];
        cin>>Iscadre[i];
        cin>>IsWestProvince[i];
        cin>>papers[i];
    }
    for(int i=0;i<N;i++)
    {
        if(Terminal[i]>80&&papers[i]>=1)
        {
            prize[i]+=8000;
        }
        if(Terminal[i]>85&&Discussion[i]>80)
        {
            prize[i]+=4000;
        }
        if(Terminal[i]>90)
        {
            prize[i]+=2000;
        }
        if(Terminal[i]>85&&IsWestProvince[i]=='Y')
        {
            prize[i]+=1000;
        }
        if(Discussion[i]>80&&Iscadre[i]=='Y')
        {
            prize[i]+=850;
        }
    }
    maxprize=prize[0];      //        
    for(int i=0;i<N;i++)
    {
        allprize+=prize[i];
    }
    for(int i=1;i<N;i++)
    {
        if(prize[i]>maxprize)
        {
            maxprize=prize[i];
            flag=i;
        }
    }

    cout<<name[flag]<<endl;
    cout<<maxprize<<endl;
    cout<<allprize<<endl;
    return 0;
}

좋은 웹페이지 즐겨찾기