1431 快乐排队

1431 快乐排队

题目来源: CodeForces

基准时间限制:1 秒 空间限制:131072 KB 分值:

有一群人在排队,如果某个人想排到前面去,可以花一元钱给直接站在他前面的人,然后和这个人交换位置。如果自己没有钱了,就不能和前面的人交换。

但是呢,队列里面的人觉得排他前面的所有人一定要比较有钱的,至少不能比他自己拿的少。否则里面就会有人生气。站在队头的人一定是高兴的。

现在给出一个队列的初始状态,问能不能调整队列,使得里面的人都高兴。

样例解释:样例1中,队尾的人可以和前面的人交换,变成9 10。

Input

单组测试数据。
第一行包含一个整数n (1 ≤ n ≤ 200,000),表示队列中的人数。
第二行包含n个空格分开的整数 ai (0 ≤ ai ≤ 10^9),ai表示队列中第i个人手上拿的钱。编号从队尾开始。

Output

对于每一组数据如果能够使得所有人高兴输出Happy,否则输出Sad。

Input示例

2
11 8
2
9 8

Output示例

Happy
Sad思路:可以发现下标加上数值是个定值所以,只要判重就可以了;
 1 #include<stdio.h>
 2 #include<algorithm>
 3 #include<stdlib.h>
 4 #include<queue>
 5 #include<map>
 6 #include<stack>
 7 #include<string.h>
 8 #include<iostream>
 9 #define FOR(i,n) for (i = 0;i < n;i++)
10 #define SC(n) scanf("%d",&n);
11 using namespace std;
12 const int BufferSize=1<<16;
13 char buffer[BufferSize],*head,*tail;
14 inline char Getchar()
15 {
16     if(head==tail)
17     {
18         int l=fread(buffer,1,BufferSize,stdin);
19         tail=(head=buffer)+l;
20     }
21     return *head++;
22 }
23 inline int read()
24 {
25     int x=0,f=1;
26     char c=Getchar();
27     for(; !isdigit(c); c=Getchar()) if(c==‘-‘) f=-1;
28     for(; isdigit(c); c=Getchar()) x=x*10+c-‘0‘;
29     return x*f;
30 }
31 int ans[500000];
32 map<int,int>my;
33 int main(void)
34 {
35     int c;
36     c = read();
37     int flag = 0;
38     int i;
39     FOR(i,c)
40     {
41         ans[i] = read();
42         ans[i] = ans[i]+i;
43     }
44     sort(ans,ans+c);
45     int x = ans[0];
46     for(i = 1; i < c; i++)
47     {
48         if(ans[i]==x)
49         {
50             flag = 1;break;
51         }
52         x = ans[i];
53     }
54     if(flag)printf("Sad\n");
55     else printf("Happy\n");
56     return 0;
57 }

代码库

时间: 10-24

1431 快乐排队的相关文章

你不是真正的快乐

卖煎饼的小摊摊主是个年轻小伙子,留着非主流发型,携带妻儿一起每天早上卖煎饼.男人哼着小曲摊煎饼给排着队焦急等待害怕多等一分钟就会迟到的年轻人……女人抱着孩子在旁边看着,陪着.有时候是换女人摊煎饼给这些买不起高大上的店里太贵的早餐,自己又不做早餐,或者没时间做早餐想多睡几分钟的年轻人.每天一家人一起出摊,丈夫哼着小曲儿,妻子化着淡妆,普通的劳作,他们自得其乐. 这波年轻人呢?每天坐在办公室里,没有风吹日晒,工资也能养活自己,但是似乎并不开心. 哦!这些可怜的青年为什么脸上总是一些灰色的情绪.看看他

排队美食在线点餐,O2O模式新体验

O2O成为今年餐饮行业最热的话题,当"餐饮商家"联合"手机点餐APP"会产生怎样的火花,会给消费者带来什么样的惊喜?作为市场上首批布局餐饮O2O的领导者,排队美食在O2O方面做得有声有色.那么,排队美食手机点餐究竟有什么魅力?跟着小编,一起去实地体验了一下手吧. 点一点 在线点餐已成年轻人的新时尚 你还在拿着厚重的菜谱点餐吗?那你就OUT了!你知道吗,手机点餐悄然在上班族和学生中兴起,只要手指轻轻点一点,就能轻松完成点餐. 手机点餐给顾客带来了不一样的体验,在普通纸

队列练习--排队买饭

题目描述 中午买饭的人特多,食堂真是太拥挤了,买个饭费劲,理工大的小孩还是很聪明的,直接奔政通超市,哈哈,确实,政通超市里面也卖饭,有好几种菜,做的比食堂好吃多了,价格也不比食堂贵,并且买菜就送豆浆,吸引了不少童鞋.所以有时吧,人还是很多的,排队是免不了的,悲剧的是超市只有两个收银窗口. 问题是这样的:开始有两队人在排队,现在咱们只研究第一队,现在我们给每个人一个编号,保证编号各不相同,排在前面的人买完饭就走了,有些人挑完饭就排在后面等待付款,还有一些人比较聪明,看到另一个队人比较少,直接离开这

luogu P1966 火柴排队

二次联通门 : luogu P1966 火柴排队 /* luogu P1966 火柴排队 神TM逆序对... noip怎么这么坑啊.. 暴力都没得打 此题模拟考试时爆了0 做法 将A数组排序,由于B数组与A数组是一一对应的 那么B数组的位置也会发生相应的变化 此时B数组逆序数对数即为答案 */ #include <cstdio> #include <iostream> #include <algorithm> const int BUF = 123123123; cha

【NOIP2013】火柴排队

P1092 - [NOIP2013]火柴排队 Description Input 共三行,第一行包含一个整数 n,表示每盒中火柴的数目. 第二行有 n 个整数,每两个整数之间用一个空格隔开,表示第一列火柴的高度. 第三行有 n 个整数,每两个整数之间用一个空格隔开,表示第二列火柴的高度. Output 输出共一行,包含一个整数,表示最少交换次数对 99,999,997 取模的结果. Sample Input 样例1: 4 2 3 1 4 3 2 1 4 样例2: 4 1 3 4 2 1 7 2

树形动态规划 fjutoj-2392 聚会的快乐

聚会的快乐 TimeLimit:1000MS  MemoryLimit:128MB 64-bit integer IO format:%lld Problem Description 你要组织一个由你公司的人参加的聚会.你希望聚会非常愉快,尽可能多地找些有趣的热闹.但是劝你不要同时邀请某个人和他的上司,因为这可能带来争吵.给定N个人(姓名,他幽默的系数,以及他上司的名字),编程找到能使幽默系数和最大的若干个人. Input 第一行一个整数N(N<100).接下来有N行,每一行描述一个人的信息,信

节点的排队时延与丢包

节点时延中最复杂和有趣的部分是排队时延\(d_{queue}\).与其他三种时延不同,排队时延对不同的分组是不同的. 在表征排队时延时,通常使用统计量测度,比如平均排队时延.排队时延的方差和排队时延超过某些特定值的概率. 排队时延的决定因素 流量到达该队列的速率\(a\ pkt/s\) 链路的传输速率\(R\ b/s\),即队列中推出比特的速率(不是接收) 到达流量的性质,周期性到达或者以突发形式到达 流量强度与排队时延 假定所有分组都是\(L\)比特组成,且队列无限大,则称\(La/R\)为流

[BZOJ 2729][HNOI2012]排队(排列组合+高精)

Description 某中学有 n 名男同学,m 名女同学和两名老师要排队参加体检.他们排成一条直线,并且任意两名女同学不能相邻,两名老师也不能相邻,那么一共有多少种排法呢?(注意:任意两个人都是不同的) Solution 好像必须写压位高精的QAQ 先排n名男生,插空,讨论两名老师插在两个不同的空里的情况和先排在一起再在中间插一名女生的情况 #include<iostream> #include<cstdio> #include<cstring> #include&

08:病人排队

08:病人排队 查看 提交 统计 提问 总时间限制:  1000ms 内存限制:  65536kB 描述 病人登记看病,编写一个程序,将登记的病人按照以下原则排出看病的先后顺序: 1. 老年人(年龄 >= 60岁)比非老年人优先看病. 2. 老年人按年龄从大到小的顺序看病,年龄相同的按登记的先后顺序排序. 3. 非老年人按登记的先后顺序看病. 输入 第1行,输入一个小于100的正整数,表示病人的个数:后面按照病人登记的先后顺序,每行输入一个病人的信息,包括:一个长度小于10的字符串表示病人的ID