乐乐想做一个关于公交文化 的调查。他专门为排队上车发明了一套叫做“愧疚指数”的分析系统,就是在队列中把人 分为三等:第一等为优先级最高,最需要照顾的老人、小孩、孕妇等,应该最先上车,编 号为 1;第二等是女人,为了发扬绅士风度,男人是要让女人先上车的,但优先级小于一 等,编号为 2;第三等是男人,优先级最低,应该排在最后面,编号为 3。所谓的“愧疚指 数”是指队列中一个人后面有多少人的优先级比他高,如队列中有 5 个人分别为:3 2 1 2 1,那么这 5 个人的“愧疚指数”分别为:4 2 0 1 0。现在已经知道一个队列,请你帮乐 乐算出队列中每个人的“愧疚指数” 。
输入格式: 第一行是一个正整数 n,表示一共有多少个人排队。
第二行有 n 个用空格隔开的正整数,它们从左至右给出了队列中的 n 个人的编号。
输出格式: 输出一行:有 n 个用空格分开的正整数,代表队列中每个人的“愧疚指数” 。
输入样例:5
3 2 1 2 1
输出样例: 4 2 0 1 0
数据规模 对于 80%的数据,n≤10000; 对于 100%的数据,n≤200000。
好心人,麻烦你用pascal语言解决问题
答案:2 悬赏:0 手机版
解决时间 2021-01-27 21:17
- 提问者网友:鐵馬踏冰河
- 2021-01-26 21:53
最佳答案
- 五星知识达人网友:夜风逐马
- 2021-01-26 23:04
对不起,一开始的代码有些错误,现在没问题了
由于我怕空间爆掉所以我用字符串来存储
var i,j,n,old,woman,man:longint;
ren:char;
dui:ansistring;
begin
readln(n);
dui:=''; old:=0; woman:=0; man:=0;
for i:=1 to n do
begin
read(ren);
if(ren='1') then old:=old+1 else
if(ren='2') then woman:=woman+1;
dui:=dui+ren;
read(ren);
end;
{du ru}
writeln('dui:',dui);
for i:=1 to n do
begin
if(dui[i]='3')then
write(old+woman,' ')
else if(dui[i]='2') then
begin
write(old,' ');
woman:=woman-1;
end
else
begin
write('0 ');
old:=old-1;
end;
end;
end.
由于我怕空间爆掉所以我用字符串来存储
var i,j,n,old,woman,man:longint;
ren:char;
dui:ansistring;
begin
readln(n);
dui:=''; old:=0; woman:=0; man:=0;
for i:=1 to n do
begin
read(ren);
if(ren='1') then old:=old+1 else
if(ren='2') then woman:=woman+1;
dui:=dui+ren;
read(ren);
end;
{du ru}
writeln('dui:',dui);
for i:=1 to n do
begin
if(dui[i]='3')then
write(old+woman,' ')
else if(dui[i]='2') then
begin
write(old,' ');
woman:=woman-1;
end
else
begin
write('0 ');
old:=old-1;
end;
end;
end.
全部回答
- 1楼网友:旧脸谱
- 2021-01-26 23:39
数据规模 对于 80%的数据,n≤10000; 对于 100%的数据,n≤200000。
这句没看明白
再看看别人怎么说的。
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯