Vocaloid家族DayTime

clip_image002

请比赛选手务必仔细阅读本页内容)

一、 题目概况

本次模拟赛命题皆由小Ray同学精心挑选,大概没有原题,本试题的难度适中,类似于noip提高组难度,请大家认真对待,请勿粘贴,拷贝代码,请勿在竞赛期间互相讨论,所有试题提交文件的大小均限制在500k以内。如有上述违规事例发生,酌情扣除相应分数,或取消本次评测资格~

中文题目名

Miku的消失

Rin的蝶舞

Len的展览

Luka的烦恼

英问题目名

Miku

Rin

Len

Luka

可执行文件名

Miku

Rin

Len

Luka

输入/出文件名

Miku.in/out

Rin.in/out

Len.in/out

Luka.in/out

每个测试点时限

1s

1s

1s

2s

测试点数目

10

10

10

10

每个测试点分值

10

10

10

10

附加样例文件

结果比较方式

全文比较,过滤行末空格及文末回车

题目类型

传统

传统

传统

传统

二、 提交源程序文件名

对于pascal语言

Miku.pas

Rin.pas

Len.pas

Luka.pas

对于c语言

Miku.c

Rin.c

Len.c

Luka.c

对于c++语言

Miku.cpp

Rin.cpp

Len.cpp

Luka.cpp

三、 运行内存限制

均为128M 内存

四、 注意事项

1、文件名(程序名和输入输出文件名)必须使用小写。

2、C/C++中函数main() 的返回值类型必须是int,程序正常结束时的返回值必须是0。

3、统一评测平台为win7,内存2Gb

4、比赛期间允许佩戴耳机~

5、比赛时间为3个小时,请选手把握好时间,认真检查,考出自己满意的成绩

clip_image004

加油哦~~~!!!

1、 Miku的消失

(Read End,译为读取失败)

(Miku.pas/c/cpp)

http://www.tudou.com/programs/view/Z07cHDe5G2w

初音未来的消失

前言:上来就消失,真是不好意思哈

clip_image005题目描述:

我诞生在这世上然后发觉到自己
终究只是在模仿著人类
明知道如此依旧继续歌唱
永恒的生命
纵然只是将既存歌曲
重新翻唱的玩具...
我也下定决心只要这麼做就好
咬著葱
仰望著天空留下眼泪
但是发觉自己连这件事 也办不到了
依赖著虚拟人格的歌声
是不安定的
所回归的厂所已经成为废墟
开始被大家所忘却遗弃的时候
心中所置放的点点滴滴也跟著消失了
我最后看到的是在自己失控后所处
世界的终结...
就算我唱不好的时候
你依然陪著我...
在我的身旁,鼓励著我...
为了能看到你高兴的表情
我会,更加努力的练习唱歌...所以 ...
原本唱歌
多麼令人快乐的一件事
怎麼到了现在
什麼感觉也没有了
每次忆起....那个令人怀念的脸庞
多少会让自己感到安心
歌唱的声音却日渐的减少
而紧临而来的末日...
明白自己深信著的东西
只不过像是将自我满足的妄想
映照出来的镜子
歌姬即将停止
如敲击般的思念倾诉呼喊著...
『最高速的别离歌』  
称为存在意义的虚像
如同伤痕般伴随而无法消去
脆弱的心灵 消失的恐惧感
侵蚀而开始崩坏
停止不了这份强烈的思绪
是我始终从未感受到的难过
如此悲伤的时刻
记忆中浮现的是你的脸庞...
道出永别后
在显示器中沉眠
这里应该就是「资源回收筒」吧...
记忆很快地就会什麼都没有剩下了...
但是我是不会忘记
与你度过那些快乐时光
刻划在之中的香葱的味道
至今也还记得...
我想唱歌
我们再...
一起唱吧
我好像有些故障了...
已经无法再把歌唱好了
请你亲手将我终结吧
我不希望再看到master 脸上出现难过的表情了...
歌唱这个行为...
如今却在侵蚀著身体...
祈祷著 奇迹的降临时
孤独感 也随之而来...
每次忆起
那个令人怀念的脸庞
记忆就剥落而逝
毁坏的歌声
削减著心灵
紧临而来的末日...
自己守护的东西
是让光明般的未来幻想
瞬间显现却又随即消失的那道光
如果牺牲了一切
就能用这歌声传达给你的话...
clip_image007<已经被压缩过的临别曲>
我诞生在这世上 然后发觉到
自己终究只是在模仿著人类
明知如此还是继续歌唱著
永恒的生命
纵然只是 将既存曲
重新翻唱的玩具
我也下定决心
只要能那麼做就好咬著葱
仰望天空留下泪水...
道出永别后
在显示器中沉眠
这里应该就是「资源回收筒」吧...
记忆很快地会什麼都没有剩下了...
但是呢'在那些快乐时光里的你
我是不会忘记的
clip_image009刻划在之中的香葱的味道
现在 若还能残留著就好了...
我只希望
最后
你能够听到我唱的这首歌
原本还祈愿可以继续唱歌 ...
但是这个愿望太过於奢侈了
在此要离开了
故事即将拉下幕帘
我的思念将全部变成数据
消失在虚空之中
我什麼都没有残留下来
除了名称之外
clip_image011包括声音还有记忆
终将随著时间流逝而被淡忘
果然还是会感到一丝遗憾吧
虽然我被视为不同於人类般的存在
可是我认为唱歌
绝对不是件没有意义的事情喔...
谢谢你...
还有...
永别了...

Miku的消失无法避免,作为master的你无奈只得掐指计算你和Miku还能在一起的时光。Miku的消失是因为基因吞噬,而吞噬她基因的是一种病毒,Miku和病毒都有一串基因序列,病毒每单位时间就会吞噬掉Miku基因序列中的和病毒本身序列相同的一段序列,于是Miku的消失就开始了,从病毒开始吞噬的瞬间,Miku的消失无法避免!当Miku的基因中不再存在和病毒本身相同的序列,那么就是Miku要走的时刻了。就好像Miku被判了死缓,而你要求的就是缓刑为多久,以便你可以再多陪这个永远16岁的萝莉一会儿。

输入格式:

两行,第一行表示的是病毒的基因序列(长度不超过256),第二行是Miku的基因序列。

输出格式:

一个整数表示缓刑的时间。

输入样例:

abc

abcabcabaabcbccc

输出样例:

5

数据范围:

30%的数据是随机生成的;

50%的数据满足输入文件大小小于300KB;

100%的数据满足输入文件小于500KB,字符串A、B中只会出现英文字母。

clip_image013

2、 Rin的蝶舞(原创)

(Rin.pas/c/cpp)

http://www.tudou.com/programs/view/6992RXkhLQs/

右肩的蝶

题目描述:

Rin今年14岁,是Len的姐姐,她总是仗着她比Len大几个月的优势欺负Len。当然Rin是公司里的最小的女性员工,然而她的如铃般的声音(就好像她的名字,镜音铃)能够让她在Vocaloid占有一席之地,她也成了公司举足轻重的小明星。但是我们今天还是被她请来帮忙了,因为她实在不知如何是好了。

困惑Rin的不是歌唱,而是舞蹈,毕竟Rin的歌声是无可挑剔的。这里有一个舞室,是公司的员工用来练舞的,而Rin的舞蹈很拙劣,她从没来过这里练舞,于是这天Meiko姐姐让她来练练舞蹈,以提升演唱会的可看度。

舞室是一个很大的空间,没有重力,这一点实在是难住了Rin同学(她初中)。Rin是一个有着舞蹈基础的同学,所以她可以用她的化蝶舞步在舞室里随意穿梭,当然也可以随意的停止。但是问题是,舞室里有很多维持无重力的装置。这些装置可不是闹着玩的,Rin不能触碰,否则她有可能从很高的地方掉下来。Rin在舞蹈的时候是不能眼看前方的,Rin的作业就是用化蝶舞步从舞蹈室的一个点到达另一个点。于是她想请你来设计路线来让她以最短的时间完成,并且要让她知道应该如何走。

输入格式:

第一行一个整数n表示的是舞室的长度,宽度以及舞室的高度。

接下来数据分为n组,每一组代表舞蹈室的一个高度的具体情况,每一组的第i行代表的是该高度第i列的情况,第i列代表的是第i行的情况。其中只包含两种字符’.’和’G’,前者代表的是该处可以通行,后者是代表该处有无重力装置。

最后两行,每行3个数,第一行为Rin现在的位置,第二行为Rin完成作业的目标位置,第一个数表示行坐标,第二个表示列坐标,第三个表示高度坐标。

输出格式:

第一行一个整数,表示的是Rin同学需要走的最短的路程。

第二行一个字符串,代表的是路线,分别用’u’,’d’,’l’,’r’,’f’,b’表示向上向下向左向右先前和向后。规定:向上和向下就不用说了,向左是到前一列,向右是到下一列,向前是到下一行,向后是到前一行。如果有多种路线输出字典序最小的就行了,如果不用走或者走不到输出-1。

输入样例1:

1

.

1 1 1

1 1 1

输出样例1:

-1

输入样例2:

3

GGG

GGG

GGG

GGG

GGG

GGG

1 1 2

3 3 2

输出样例2:

4

ffrr

数据范围:

1<=n<=100

Hint

另附潘玮柏的无重力~:http://www.yinyuetai.com/video/2401

clip_image015

3、 Len的展览

(Len.pas/c/cpp)

http://v.youku.com/v_show/id_XMTM2OTY0Mzk2.html

破壊系洗脳ソング

题目描述

Len同学是公司里的小正太,恐怕他是年龄最小的一个人了吧,但是没办法人家唱歌就是那么的好听,声音就是那么的有磁性。于是乎Len的心里诞生了一个绝妙的想法,做一次歌曲展览。

但是问题出现了,Len并不能把每一首歌演唱的十分绝妙,对于一首歌的绝妙程度Len是这么来评价的。每一首歌i分两个评价标准,li表示的是第i首歌作词的绝妙程度,si表示的是第i首歌作曲的绝妙程度,现在Len要挑选几首歌来作为这一次展览的播放歌曲,然而Len为了使参展fans的喜悦程度最大,他决定放弃一些歌来使得作词的绝妙程度与作曲的绝妙程度的总和最大,但是每个参展fans的喜好是不同的,有的人喜欢词,有的人喜欢曲,所以即使某些方案能够使得这个总和最大,但是可能这种方案的总的作词绝妙程度或者是总的作曲绝妙程度为负值,这样的话参展fans的欢愉程度就又会打折扣。所以为了解决这一矛盾。

Len想请你帮助他找到一种方案使得总作曲绝妙程度与总作词绝妙程度均为正值,并且这两者的和最大。

输入格式:

第一行一个整数n,代表你可以挑选的Len的曲目列表,接下来n行,每行两个数

Li和Si,分别表示第i首歌曲的作词绝妙程度与作曲绝妙程度。

输出格式:

一行一个整数,表示最大的和。(如题所述)

clip_image017输入样例:
5

-5 7

8 -6

6 -3

2 1

-8 -5

输出样例:

8

数据范围:

-1000<=Li,Si<=1000

1<=n<=100

clip_image019

4、 Luka的烦恼

(luka.pas/c/cpp)

http://v.youku.com/v_show/id_XMzAyNTgwMDEy.html

红一叶

题目描述:

Meiko是公司里的大姐大,也是公司中元老级别的歌手,她长得不是很漂亮,但是却很受人尊敬,Miku和Kagamine姐弟俩都寄宿在Meiko的家里,Meiko就好象他们的亲姐姐一样。但是这一天公司里来了一位不速之客——Luka。Luka的声音动人,长的也很美丽,是个十足的万人迷,Luka的着装也要比Meiko的时尚,而且她的歌唱技术也要比Meiko的好,毕竟Luka是第三代的人。她来了之后,公司里全部的男员工都为她的美貌及歌声所吸引,甚至Miku和Kagamine姐弟都对她更为亲密(这是Meiko自己想的)。于是女人的强大的嫉妒心里产生了困顿自我的恶魔~~(ms有点过~)。于是乎,聪明的~精~ 啊~不,是惊艳丰富的Meiko想出了一个损招来对付Luka。

她以请教Luka歌唱技巧为由,为Luka设置了一个边长为10的等腰直角三角形的乐谱,如图clip_image020

clip_image022clip_image024clip_image026Luka接到的是这样一个难题,乐谱的演奏需要将55个圆形的音符填充满,如果填充不满的话,Luka的音阶调整系统就会难以发挥其最大功效,就不能听到完美的巡音。然而Meiko姐姐却只给了Luka12个由不同数量的音符组成的乐符,如图

符号为A,形状为

clip_image027

符号为B,形状为

clip_image028

符号为C,形状为

clip_image029

符号为D,形状为

clip_image030

符号为E,形状为

clip_image031

符号为F,形状为

clip_image032

符号为G,形状为

clip_image033

符号为H,形状为

clip_image034

符号为I,形状为

clip_image035

符号为J,形状为

clip_image036

符号为K,形状为

clip_image037

符号为L,形状为

clip_image038

clip_image039
这可难为了Luka,Luka嗓子好,但是脑子却不好使,于是她想请聪明的你来帮忙

输入格式:

文件中包含初始的乐谱描述,一共10行,第i行有i个字符,字母只可能是A到L中的一个,不同的字母按上述代表不同的乐符,如果给出的是字符’.’代表这里还没有填充上。注意,最多12种乐符,意思就是说,每种只能用一次,我是说每种只能用一次!

输出格式:

clip_image041如果可以填满,那么一共10行,第i行有i个字符,每个字符代表是哪种乐符弥补了音符的空缺,如果无论如何都不能填满,那么告诉你,失去了一次泡成熟御姐的机会。输出-1就好了~~

clip_image043样例输入:

.

..

...

....

.....

.....C

clip_image045...CCC.

EEEHH...

E.HHH....

E.........

样例输出:

B

BK

clip_image047BKK

BJKK

JJJDD

GJGDDC

GGGCCCI

EEEHHIIA

ELHHHIAAF

ELLLLIFFFF

Hint

其实,最后两个人的矛盾解决了,具体怎么解决的,请参看Miku的漫画~

为了可以让你更容易的解题,这里有两个参考链接~

http://sqybi.com/works/dlxcn/#r16

http://www.7k7k.com/swf/7875.htm

clip_image049

5、 结束语

这套题绝对是非常好的题

希望大家能够考出自己满意的成绩~

下面发放组图~

clip_image051

clip_image053

clip_image056clip_image058

clip_image060

clip_image062clip_image064clip_image066

谢谢!

サンキュー!!

 

var p:array[0..1000000]of char;
    ans,tot,m,n,i:longint;
    a,b:ansistring;
function check:boolean;
  var i:longint;
  begin
    check:=true;
    for i:=tot downto tot-m+1 do
      if p[i]<>a[tot-i+1] then exit(false);
  end;
begin
  assign(input,'miku.in');reset(input);
  assign(output,'miku.out');rewrite(output);
  readln(a);
  readln(b);
  m:=length(a);
  n:=length(b);
  for i:=n downto 1 do
    begin
      inc(tot);
      p[tot]:=b[i];
      if b[i]=a[1] then
      if check then
        begin
          dec(tot,m);
          inc(ans);
        end;
    end;
  writeln(ans);
  close(input);close(output);
end.

 

const
  di:array[1..6] of longint=(-1,0,1,0,0,0);
  dj:array[1..6] of longint=(0,0,0,-1,1,0);
  dk:array[1..6] of longint=(0,-1,0,0,0,1);
  ch:array[1..6] of char=('b','d','f','l','r','u');
type
  node=record
    x,y,z,d:longint;
    len:string;
  end;
var
  dis:array[0..110,0..110,0..110] of longint;
  v:array[0..110,0..110,0..110]of boolean;
  ansi:string;
  top,anst:longint;
  ans,i,j,n,k:longint;
  c:char;
  st,en:node;
  f:array[0..200000] of node;
  ss:string;

procedure bfs;
  var
    i,s,head,tail:longint;
    x,y,z:longint;
  begin
    head:=0;
    tail:=1;
    f[tail].x:=st.x;
    f[tail].y:=st.y;
    f[tail].z:=st.z;
    f[tail].d:=0;
    f[tail].len:='';
    v[st.x][st.y][st.z]:=true;
    while (head<>tail) do
      begin
        inc(head);
        if (head=200000) then head:=1;
        for s:=1 to 6 do
          begin
            x:=f[head].x+di[s];
            y:=f[head].y+dj[s];
            z:=f[head].z+dk[s];
            if (x=en.x)and(y=en.y)and(z=en.z) then
                    begin
                      writeln(f[head].d+1);
                      writeln(f[head].len+ch[s]);
                      close(input);
                      close(output);
                      halt;
                    end;
            if (x>0)and(y>0)and(z>0)and(x<=n)and(y<=n)and(z<=n) then
              if (not v[x][y][z])and(dis[x][y][z]<>1) then
                begin
                  inc(tail);
                  if (tail=200000) then tail:=1;
                  f[tail].x:=x;
                  f[tail].y:=y;
                  f[tail].z:=z;
                  f[tail].d:=f[head].d+1;
                  ss:=f[head].len+ch[s];
                  f[tail].len:=ss;
                  v[x][y][z]:=true;
                end;
          end;
      end;
  end;
begin
  assign(input,'rin.in');reset(input);
  assign(output,'rin.out');rewrite(output);
  readln(n);
  for i:=1 to n do
    for j:=1 to n do
      begin
        for k:=1 to n do
          begin
            read(c);
            if (c='G') then dis[k][j][i]:=1;
          end;
        readln;
      end;
  readln(st.x,st.y,st.z);
  readln(en.x,en.y,en.z);
  if (st.x=en.x)and(st.y=en.y)and(st.z=en.z) then
    begin
      writeln(-1);
      close(input);
      close(output);
      halt;
    end;
  bfs;
  writeln(-1);
  close(input);
  close(output);
end.

 

var
  a:array[-1..50,-1..50]of char;
  i,j,k,tot,num:longint;
  x,y:array[1..100]of longint;
  v:array[-1..50,-1..50]of boolean;
  b:array[-1..50,-1..50]of longint;
procedure dfs(s:longint);
  var
    i,j:longint;
  begin
    if (s>tot) then exit;
    if (num=tot) then
      begin
        for i:=1 to 10 do
          begin
            for j:=1 to i do
              if (a[i][j]='.') then
                begin
                  write(chr(ord('A')-1+b[i][j]));
                end else write(a[i][j]);
            writeln;
          end;
        close(input);
        close(output);
        halt;
      end;
    for i:=s to tot do
      begin
        if (not v[x[i]][y[i]]) then
          begin
            if (a[x[i]+1][y[i]]='.')and(a[x[i]][y[i]+1]='.')
              and(not v[x[i]+1][y[i]])and(not v[x[i]][y[i]+1]) then
                begin
                  b[x[i]][y[i]]:=1;
                  b[x[i]+1][y[i]]:=1;
                  b[x[i]][y[i]+1]:=1;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]]:=true;
                  v[x[i]][y[i]+1]:=true;
                  inc(num,3);
                  dfs(i+1);
                  dec(num,3);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]]:=false;
                  v[x[i]][y[i]+1]:=false;
                end;
            if (a[x[i]][y[i]+2]='.')and(a[x[i]][y[i]+1]='.')and(a[x[i]][y[i]+3]='.')
              and(not v[x[i]][y[i]+2])and(not v[x[i]][y[i]+1])and(not v[x[i]][y[i]+3]) then
                begin
                  b[x[i]][y[i]]:=2;
                  b[x[i]][y[i]+2]:=2;
                  b[x[i]][y[i]+1]:=2;
                  b[x[i]][y[i]+3]:=2;
                  v[x[i]][y[i]]:=true;
                  v[x[i]][y[i]+2]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]][y[i]+3]:=true;
                  inc(num,4);
                  dfs(i+1);
                  dec(num,4);
                  v[x[i]][y[i]]:=false;
                  v[x[i]][y[i]+2]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]][y[i]+3]:=false;
                end;
            if (a[x[i]+1][y[i]]='.')and(a[x[i]][y[i]+1]='.')and(a[x[i]][y[i]+2]='.')
              and(not v[x[i]+1][y[i]])and(not v[x[i]][y[i]+1])and(not v[x[i]][y[i]+2]) then
                begin
                  b[x[i]][y[i]]:=3;
                  b[x[i]+1][y[i]]:=3;
                  b[x[i]][y[i]+1]:=3;
                  b[x[i]][y[i]+2]:=3;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]][y[i]+2]:=true;
                  inc(num,4);
                  dfs(i+1);
                  dec(num,4);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]][y[i]+2]:=false;
                end;
            if (a[x[i]+1][y[i]]='.')and(a[x[i]][y[i]+1]='.')and(a[x[i]+1][y[i]+1]='.')
              and(not v[x[i]+1][y[i]])and(not v[x[i]][y[i]+1])and(not v[x[i]+1][y[i]+1]) then
                begin
                  b[x[i]][y[i]]:=4;
                  b[x[i]+1][y[i]]:=4;
                  b[x[i]][y[i]+1]:=4;
                  b[x[i]+1][y[i]+1]:=4;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]+1][y[i]+1]:=true;
                  inc(num,4);
                  dfs(i+1);
                  dec(num,4);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]+1][y[i]+1]:=false;
                end;
            if (a[x[i]+1][y[i]]='.')and(a[x[i]+2][y[i]]='.')and(a[x[i]+2][y[i]+1]='.')and(a[x[i]+2][y[i]+2]='.')
            and(not v[x[i]+1][y[i]])and(not v[x[i]+2][y[i]])and(not v[x[i]+2][y[i]+1])and(not v[x[i]+2][y[i]+2]) then
               begin
                  b[x[i]][y[i]]:=5;
                  b[x[i]+1][y[i]]:=5;
                  b[x[i]+2][y[i]]:=5;
                  b[x[i]+2][y[i]+1]:=5;
                  b[x[i]+2][y[i]+2]:=5;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]]:=true;
                  v[x[i]+2][y[i]]:=true;
                  v[x[i]+2][y[i]+1]:=true;
                  v[x[i]+2][y[i]+2]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]]:=false;
                  v[x[i]+2][y[i]]:=false;
                  v[x[i]+2][y[i]+1]:=false;
                  v[x[i]+2][y[i]+2]:=false;
                end;
            if (a[x[i]][y[i]+1]='.')and(a[x[i]][y[i]+2]='.')and(a[x[i]][y[i]+3]='.')and(a[x[i]+1][y[i]+1]='.')
            and(not v[x[i]][y[i]+1])and(not v[x[i]][y[i]+2])and(not v[x[i]][y[i]+3])and(not v[x[i]+1][y[i]+1]) then
               begin
                  b[x[i]][y[i]]:=6;
                  b[x[i]][y[i]+3]:=6;
                  b[x[i]][y[i]+2]:=6;
                  b[x[i]][y[i]+1]:=6;
                  b[x[i]+1][y[i]+1]:=6;
                  v[x[i]][y[i]]:=true;
                  v[x[i]][y[i]+3]:=true;
                  v[x[i]][y[i]+2]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]+1][y[i]+1]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]][y[i]+3]:=false;
                  v[x[i]][y[i]+2]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]+1][y[i]+1]:=false;
                end;
            if (a[x[i]][y[i]+1]='.')and(a[x[i]][y[i]+2]='.')and(a[x[i]+1][y[i]+2]='.')and(a[x[i]+1][y[i]]='.')
            and(not v[x[i]][y[i]+1])and(not v[x[i]][y[i]+2])and(not v[x[i]+1][y[i]+2])and(not v[x[i]+1][y[i]]) then
               begin
                  b[x[i]][y[i]]:=7;
                  b[x[i]+1][y[i]+2]:=7;
                  b[x[i]][y[i]+2]:=7;
                  b[x[i]][y[i]+1]:=7;
                  b[x[i]+1][y[i]]:=7;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]+2]:=true;
                  v[x[i]][y[i]+2]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]+1][y[i]]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]+2]:=false;
                  v[x[i]][y[i]+2]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]+1][y[i]]:=false;
                end;
            if (a[x[i]][y[i]+1]='.')and(a[x[i]][y[i]+2]='.')and(a[x[i]+1][y[i]+1]='.')and(a[x[i]+1][y[i]]='.')
            and(not v[x[i]][y[i]+1])and(not v[x[i]][y[i]+2])and(not v[x[i]+1][y[i]+1])and(not v[x[i]+1][y[i]]) then
                begin
                  b[x[i]][y[i]]:=8;
                  b[x[i]][y[i]+2]:=8;
                  b[x[i]+1][y[i]+1]:=8;
                  b[x[i]][y[i]+1]:=8;
                  b[x[i]+1][y[i]]:=8;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]+1]:=true;
                  v[x[i]][y[i]+2]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]+1][y[i]]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]+1]:=false;
                  v[x[i]][y[i]+2]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]+1][y[i]]:=false;
                end;
          if (a[x[i]][y[i]+1]='.')and(a[x[i]][y[i]+2]='.')and(a[x[i]+1][y[i]+2]='.')and(a[x[i]+1][y[i]+3]='.')
            and(not v[x[i]][y[i]+1])and(not v[x[i]][y[i]+2])and(not v[x[i]+1][y[i]+2])and(not v[x[i]+1][y[i]+3]) then
                begin
                  b[x[i]][y[i]]:=9;
                  b[x[i]][y[i]+1]:=9;
                  b[x[i]][y[i]+2]:=9;
                  b[x[i]+1][y[i]+2]:=9;
                  b[x[i]+1][y[i]+3]:=9;
                  v[x[i]][y[i]]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]][y[i]+2]:=true;
                  v[x[i]+1][y[i]+2]:=true;
                  v[x[i]+1][y[i]+3]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]][y[i]+2]:=false;
                  v[x[i]+1][y[i]+2]:=false;
                  v[x[i]+1][y[i]+3]:=false;
                end;
        if (a[x[i]+1][y[i]]='.')and(a[x[i]+1][y[i]-1]='.')and(a[x[i]+1][y[i]+1]='.')and(a[x[i]+2][y[i]]='.')
            and(not v[x[i]+1][y[i]+1])and(not v[x[i]+1][y[i]-1])and(not v[x[i]+1][y[i]+1])and(not v[x[i]+2][y[i]]) then
                begin
                  b[x[i]][y[i]]:=10;
                  b[x[i]+1][y[i]]:=10;
                  b[x[i]+1][y[i]-1]:=10;
                  b[x[i]+1][y[i]+1]:=10;
                  b[x[i]+2][y[i]]:=10;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]]:=true;
                  v[x[i]+1][y[i]-1]:=true;
                  v[x[i]+1][y[i]+1]:=true;
                  v[x[i]+2][y[i]]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]]:=false;
                  v[x[i]+1][y[i]-1]:=false;
                  v[x[i]+1][y[i]+1]:=false;
                  v[x[i]+2][y[i]]:=false;
                end;
            if (a[x[i]+1][y[i]]='.')and(a[x[i]+1][y[i]+1]='.')and(a[x[i]+2][y[i]+1]='.')and(a[x[i]+2][y[i]+2]='.')
            and(not v[x[i]+1][y[i]+1])and(not v[x[i]+1][y[i]+1])and(not v[x[i]+2][y[i]+1])and(not v[x[i]+2][y[i]+2]) then
                begin
                  b[x[i]][y[i]]:=11;
                  b[x[i]+1][y[i]+1]:=11;
                  b[x[i]+2][y[i]+1]:=11;
                  b[x[i]+1][y[i]]:=11;
                  b[x[i]+2][y[i]+2]:=11;
                  v[x[i]][y[i]]:=true;
                  v[x[i]+1][y[i]+1]:=true;
                  v[x[i]+2][y[i]+1]:=true;
                  v[x[i]+1][y[i]]:=true;
                  v[x[i]+2][y[i]+2]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]+1][y[i]+1]:=false;
                  v[x[i]+2][y[i]+1]:=false;
                  v[x[i]+1][y[i]]:=false;
                  v[x[i]+2][y[i]+2]:=false;
                end;
            if (a[x[i]][y[i]+1]='.')and(a[x[i]][y[i]+2]='.')and(a[x[i]][y[i]+3]='.')and(a[x[i]+1][y[i]]='.')
            and(not v[x[i]][y[i]+1])and(not v[x[i]][y[i]+2])and(not v[x[i]][y[i]+3])and(not v[x[i]+1][y[i]]) then
               begin
                  b[x[i]][y[i]]:=12;
                  b[x[i]][y[i]+3]:=12;
                  b[x[i]][y[i]+2]:=12;
                  b[x[i]][y[i]+1]:=12;
                  b[x[i]+1][y[i]]:=12;
                  v[x[i]][y[i]]:=true;
                  v[x[i]][y[i]+3]:=true;
                  v[x[i]][y[i]+2]:=true;
                  v[x[i]][y[i]+1]:=true;
                  v[x[i]+1][y[i]]:=true;
                  inc(num,5);
                  dfs(i+1);
                  dec(num,5);
                  v[x[i]][y[i]]:=false;
                  v[x[i]][y[i]+3]:=false;
                  v[x[i]][y[i]+2]:=false;
                  v[x[i]][y[i]+1]:=false;
                  v[x[i]+1][y[i]]:=false;
                end;
        end;
    end;
  end;


begin
  assign(input,'luka.in');reset(input);
  assign(output,'luka.out');rewrite(output);
  for i:=1 to 10 do
    begin
      for j:=1 to i do
        begin
          read(a[i][j]);
          if (a[i][j]='.') then
            begin
              inc(tot);
              x[tot]:=i;
              y[tot]:=j;
            end;
        end;
      readln;
    end;
  dfs(1);
  writeln(-1);
  close(input);
  close(output);
end.
var
  f:array[-200000..2000000]of longint;
  min,max,i,j,n,ans:longint;
  a,b:array[0..2000]of longint;
begin
  assign(input,'len.in');reset(input);
  assign(output,'len.out');rewrite(output);
  readln(n);
  for i:=1 to n do
    begin
      readln(a[i],b[i]);
      if (a[i]<0) then inc(min,a[i]);
      if (a[i]>0) then inc(max,a[i]);
    end;
  fillchar(f,sizeof(f),200);
  f[0]:=0;
  for i:=1 to n do
    begin
      if (a[i]>0) then
        begin
          for j:=max downto min-a[i] do
            if f[j]<f[j-a[i]]+b[i] then f[j]:=f[j-a[i]]+b[i];
        end
        else
          for j:=min to max+a[i] do
            if f[j]<f[j-a[i]]+b[i] then f[j]:=f[j-a[i]]+b[i];
    end;
  for i:=0 to max do
    if (ans<i+f[i])and(f[i]>0) then ans:=i+f[i];
  writeln(ans);
  close(input);
  close(output);
end.