51nod 西湖游船

阅读: 评论:0

51nod 西湖游船

51nod 西湖游船

有n名游客在西湖游玩,现在他们要上船观光。游客编号1到n。船的最大承重为W。第i个人的重量为c[i]。现在有若干次游客上下船的操作,请统计一下整个过程中船所承受过的最大总重量是多少。

 收起

输入

单组测试数据。
第一行输入三个整数n(1<=n<=20), m(1<=m<= 500 ) 和 W(1<=W<= 10000)。
接下来n行输入n名游客的重量c[i](1<=c[i]<=1000)。
接下来m行,每行一个1到n之间的整数,表示游客的编号。表示该游客的上/下船,如果该游客已经在船上,那么该游客就下船,反之就上船。刚开始的时候所有游客都不在船上。

输出

输出一个整数表示整个上下船过程中,船所受到的最大重量。如果最大重量超过了船的最大承重能力,输出Oh, My God!

输入样例

样例输入1
2 2 10
5
7
1
2
样例输入2
3 6 10
2
5
7
2
1
2
3
1
3

输出样例

样例输出1
Oh, My God!
样例输出2
9

没啥技巧,出现次数是偶次就减质量,奇数次就加质量,记录下最大时的质量并比较,如果超出最大承重量就输出。代码:

#include <cmath>
#include <cstdio>
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;

int main() {
    int a,b,c,d,e,f,g[10000],h[10000],maxx=-1,m=0;
    cin>>a>>b>>c;
    for(d=1;d<=a;++d)
        cin>>g[d];
    for(d=1;d<=b;++d)
    {
        cin>>h[d];
        f=0;
        for(e=d-1;e>=1;--e)
            if(h[d]==h[e]) f++;
       if(f%2!=0) m-=g[h[d]];
        else m+=g[h[d]];

        if(m>maxx) maxx=m;
        if(maxx>c) {maxx=-1;cout<<"Oh, My God!";break;}
    }
if(maxx!=-1) cout<<maxx;
    return 0;
}
 

本文发布于:2024-01-31 19:20:32,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170670003530775.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:西湖   游船   nod
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23