You can subscribe to this list here.
2008 |
Jan
|
Feb
|
Mar
|
Apr
|
May
(128) |
Jun
(97) |
Jul
(13) |
Aug
(40) |
Sep
(50) |
Oct
(27) |
Nov
(7) |
Dec
(15) |
---|---|---|---|---|---|---|---|---|---|---|---|---|
2009 |
Jan
(18) |
Feb
(47) |
Mar
(7) |
Apr
|
May
|
Jun
|
Jul
(32) |
Aug
|
Sep
(14) |
Oct
(22) |
Nov
|
Dec
|
From: <pan...@us...> - 2008-09-25 11:22:32
|
Revision: 388 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=388&view=rev Author: panzaboi Date: 2008-09-25 11:22:30 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Property Changed: ---------------- website/library/Zend/ Property changes on: website/library/Zend ___________________________________________________________________ Modified: svn:ignore - Auth Cache Config Console Controller Currency Date Db Feed Filter Form Gdata Http InfoCard Json Layout Ldap Loader Locale Log Mail Measure Memory Mime OpenId Pdf Request Rest Search Server Service Session TimeSync Translate Uri Validate View XmlRpc Acl.php Auth.php Cache.php Config.php Currency.php Date.php Db.php Debug.php Exception.php Feed.php Filter.php Form.php Gdata.php InfoCard.php Json.php Layout.php Ldap.php Loader.php Locale.php Log.php Mail.php Memory.php Mime.php OpenId.php Pdf.php Registry.php Session.php TimeSync.php Translate.php Uri.php Validate.php Version.php View.php Acl + Auth Cache Config Console Controller Currency Date Db Feed Filter Form Gdata Http InfoCard Json Layout Ldap Loader Locale Log Mail Measure Memory Mime OpenId Pdf Request Rest Search Server Service Session TimeSync Translate Uri Validate View XmlRpc Acl.php Auth.php Cache.php Config.php Currency.php Date.php Db.php Debug.php Exception.php Feed.php Filter.php Form.php Gdata.php InfoCard.php Json.php Layout.php Ldap.php Loader.php Locale.php Log.php Mail.php Memory.php Mime.php OpenId.php Pdf.php Registry.php Session.php TimeSync.php Translate.php Uri.php Validate.php Version.php View.php Acl Paginator.php Captcha Dojo Dom File Paginator Soap Test Text Wildfire Dojo.php This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:20:09
|
Revision: 387 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=387&view=rev Author: panzaboi Date: 2008-09-25 11:20:08 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Modified Paths: -------------- website/application/default/layouts/layout.phtml Modified: website/application/default/layouts/layout.phtml =================================================================== --- website/application/default/layouts/layout.phtml 2008-09-25 11:13:19 UTC (rev 386) +++ website/application/default/layouts/layout.phtml 2008-09-25 11:20:08 UTC (rev 387) @@ -14,13 +14,14 @@ <?= /*$this->headLink()->appendStylesheet('styles/ie7.css', 'screen', 'IE 7')*/'' ?> <? if ($this->dojo()->isEnabled()): - $this->dojo()->setLocalPath('/scripts/dojo/dojo.js'); + $this->dojo()->setLocalPath('/scripts/dojo/dojo.js') + ->addStyleSheetModule('dijit.themes.tundra'); echo $this->dojo(); endif; ?> <?= $this->headScript()->appendFile('/scripts/main.js') ?> </head> - <body> + <body class="tundra"> <table border="0" cellpadding="0" cellspacing="0" width="100%"> <tr bgcolor="#122a5b"> <td><img height="43" src="images/logo.gif" width="490"></td> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:13:21
|
Revision: 386 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=386&view=rev Author: panzaboi Date: 2008-09-25 11:13:19 +0000 (Thu, 25 Sep 2008) Log Message: ----------- message + translate Modified Paths: -------------- website/library/Ostacium/Controller/Action.php Modified: website/library/Ostacium/Controller/Action.php =================================================================== --- website/library/Ostacium/Controller/Action.php 2008-09-25 11:12:39 UTC (rev 385) +++ website/library/Ostacium/Controller/Action.php 2008-09-25 11:13:19 UTC (rev 386) @@ -3,10 +3,13 @@ class Ostacium_Controller_Action extends Zend_Controller_Action { protected $_model; + protected $_translate; public function init() { - $name = ucfirst($this->getRequest()->getControllerName()); + $this->_translate = Zend_Registry::get('Zend_Translate'); + + $name = ucfirst($this->getRequest()->getControllerName()); // Setup LayoutPath $layoutPath = $this->_helper->getHelper('viewRenderer')->getModuleDirectory() . DIRECTORY_SEPARATOR . 'layouts'; @@ -58,7 +61,19 @@ $to = str_replace('-', '/', $to); return $this->_redirect($to); } + + $this->view->placeholder('message')->set($this->view->message); } + + protected function translate($msg) + { + return $this->_translate->_($msg); + } + + protected function _($msg) + { + return $this->_translate->_($msg); + } } ?> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:12:45
|
Revision: 385 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=385&view=rev Author: panzaboi Date: 2008-09-25 11:12:39 +0000 (Thu, 25 Sep 2008) Log Message: ----------- added dojo + message Modified Paths: -------------- website/application/default/layouts/layout.phtml Modified: website/application/default/layouts/layout.phtml =================================================================== --- website/application/default/layouts/layout.phtml 2008-09-25 11:12:08 UTC (rev 384) +++ website/application/default/layouts/layout.phtml 2008-09-25 11:12:39 UTC (rev 385) @@ -1,4 +1,8 @@ <?= $this->doctype() ?> +<? $this->dojo()->enable() + ->setDjConfigOption('parseOnLoad', true) + ->registerModulePath('custom', '../custom/') + ->requireModule('dijit.form.FilteringSelect') ?> <html> <head> <base href="<?= 'http://' . $_SERVER["HTTP_HOST"] . $this->baseUrl() ?>/" /> @@ -9,6 +13,11 @@ <?= /*$this->headLink()->appendStylesheet('styles/ie6.css', 'screen', 'IE 6')*/'' ?> <?= /*$this->headLink()->appendStylesheet('styles/ie7.css', 'screen', 'IE 7')*/'' ?> + <? if ($this->dojo()->isEnabled()): + $this->dojo()->setLocalPath('/scripts/dojo/dojo.js'); + + echo $this->dojo(); + endif; ?> <?= $this->headScript()->appendFile('/scripts/main.js') ?> </head> <body> @@ -29,15 +38,11 @@ <table width="100%" border="0" cellpadding="0" cellspacing="5"> <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="index/about">Що це за проект</a></td></tr> <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="index/rule">Правила</a></td></tr> - <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="archieve/problemset">Набір завдань</a></td></tr> + <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="archieve/index">Набір завдань</a></td></tr> <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="archieve/submit">Протестувати Розв'язок</a></td></tr> <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="archieve/results">Результати Тестувань</a></td></tr> <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="archieve/ranks">Рейтинг Учасників</a></td></tr> <tr><td><hr></td></tr> - <!--<tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="contests.php">Змагання</a></td></tr> - <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="problemset.php">Завдання</a></td></tr> - <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="monitor.php">Монітор</a></td></tr> - <tr><td><img border="0" src="images/arrow.gif" width="8" height="8" hspace="5"><a href="clar.php">Уточнення умов</a></td></tr>--> </table> <table border=0 cellpadding=4 cellspacing=0 width="100%" summary=""> @@ -73,7 +78,7 @@ <FONT color=#d4d0e2> </FONT> <TR><TD><TABLE border=0 cellPadding=0 cellSpacing=2 width="100%"><TR><TD align=center> -</TABLE></TABLE><TD bgColor=#f4f3f8 vAlign=top height=100%><TABLE border=0 cellPadding=8 cellSpacing=1 width="100%"><TR><TD class=name vAlign=top width="100%"><TABLE border=0 cellPadding=0 cellSpacing=0 width="100%"><TR><TD bgColor=#d0d4de class=name width=4><IMG height=18 src="" width=4><TD nowrap bgColor=#122a5b class=name width=*> <FONT color=#d4d0e2><B><SMALL>Про систему</B></SMALL></FONT><TD nowrap bgColor=#122a5b class=name align=right> <FONT color=#d4d0e2><B><SMALL> 20:26 19 березня 2007 року </B></SMALL></FONT></TABLE><?= $this->layout()->content ?></table></table> +</TABLE></TABLE><TD bgColor=#f4f3f8 vAlign=top height=100%><?= $this->placeholder('message') ?><br /><?= $this->layout()->content ?></table></table> <TABLE> <TR vAlign=Bottom><TABLE border=0 cellPadding=0 cellSpacing=0 width="100%" summary=""><TR bgColor=#122a5b><TD colSpan=3><IMG alt="" height=5 src="images/pixel.gif" width=1><TR bgColor=#122a5b><TD class=copyright>© 2004-2005, <a class=copyrightlink href="mailto: ac...@ia..."><B><FONT COLOR="#d1d1d1">A-S</FONT>tudio</B></A><TD align=middle><TD align=right class=copyright><A class=copyrightlink href="http://www.acm.lviv.ua">ACM Контестер</A><TR bgColor=#122a5b><TD colSpan=3><IMG alt="" height=5 src="images/pixel.gif" width=1></TABLE> </body> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:12:14
|
Revision: 384 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=384&view=rev Author: panzaboi Date: 2008-09-25 11:12:08 +0000 (Thu, 25 Sep 2008) Log Message: ----------- view updates for needed controllers Modified Paths: -------------- website/application/default/views/scripts/error/error.phtml website/application/default/views/scripts/index/index.phtml Added Paths: ----------- website/application/default/views/scripts/archieve/ website/application/default/views/scripts/archieve/entry.phtml website/application/default/views/scripts/archieve/index.phtml website/application/default/views/scripts/archieve/view.phtml Removed Paths: ------------- website/application/default/views/scripts/index/board.phtml website/application/default/views/scripts/index/entry.phtml Added: website/application/default/views/scripts/archieve/entry.phtml =================================================================== --- website/application/default/views/scripts/archieve/entry.phtml (rev 0) +++ website/application/default/views/scripts/archieve/entry.phtml 2008-09-25 11:12:08 UTC (rev 384) @@ -0,0 +1,18 @@ +<tr bgcolor="#f4f3f8" align="middle"> + <td style="border-left: 0px none; border-right: 1px solid rgb(196, 196, 219);"> + <a href="<?= $this->url( array('action' => 'view', 'id' => $this->id), null) ?>"><?= $this->id ?></a> + </td> + + <td align="left" style="border-left: 0px none; border-right: 1px solid rgb(196, 196, 219);"> + <a href="<?= $this->url( array('action' => 'view', 'id' => $this->id), null) ?>"><?= $this->name ?></a> + </td> + + <td style="border-left: 0px none; border-right: 1px solid rgb(196, 196, 219);"><?= $this->tries ?></td> + + <td style="border-left: 0px none; border-right: 1px solid rgb(196, 196, 219);"><?= $this->accepted ?></td> + + <td style="border-left: 0px none; border-right: 0px solid rgb(196, 196, 219);"> + <img height="17" width="22" alt="Здати" src="images/b_find.gif"/> + <img height="17" width="22" alt="Показати як здають" src="images/probstatus.png"/> + </td> +</tr> \ No newline at end of file Added: website/application/default/views/scripts/archieve/index.phtml =================================================================== --- website/application/default/views/scripts/archieve/index.phtml (rev 0) +++ website/application/default/views/scripts/archieve/index.phtml 2008-09-25 11:12:08 UTC (rev 384) @@ -0,0 +1,5 @@ +<table cellspacing="1" cellpadding="8" border="0" width="100%"><tbody><tr><td width="100%" valign="top" class="name"><table cellspacing="0" cellpadding="0" border="0" width="100%"><tbody><tr><td bgcolor="#d0d4de" width="4" class="name"><img height="18" width="4" src="http://web.archive.org/web/20070323032706/http://acm.lviv.ua/"/></td><td nowrap="" bgcolor="#122a5b" width="*" class="name"> <font color="#d4d0e2"><b><small>Набiр задач</small></b><small/></font></td><td nowrap="" bgcolor="#122a5b" align="right" class="name"> <font color="#d4d0e2"><b><small> 05:26 23 березня 2007 року </small></b><small/></font></td></tr></tbody></table> <table cellspacing="0" cellpadding="0" border="0" width="100%" summary=""><tbody><tr><td bgcolor="#f4f3f8" align="middle" colspan="14"><b>Архів задач</b></td></tr><tr><td bgcolor="#c4c4db" colspan="20"><img height="1" width="1" src="http://web.archive.org/web/20070323032706/http://acm.lviv.ua/" alt=""/></td></tr><tr bgcolor="#e1e1e1" align="middle"> +<th width="70">Задача</th><th align="left" width="*"> Назва</th><th width="70">Спробували</th><th width="70">Здали</th><th align="middle" width="70">Дії</th></tr><tr><td height="1" bgcolor="#c4c4db" colspan="20"><img height="1" width="1" src="http://web.archive.org/web/20070323032706/http://acm.lviv.ua/" alt=""/></td></tr> +<?= $this->partialLoop('archieve/entry.phtml', $this->challenges) ?> + +</table><br/></td></tr></table> \ No newline at end of file Added: website/application/default/views/scripts/archieve/view.phtml =================================================================== --- website/application/default/views/scripts/archieve/view.phtml (rev 0) +++ website/application/default/views/scripts/archieve/view.phtml 2008-09-25 11:12:08 UTC (rev 384) @@ -0,0 +1,5 @@ +<?php + +var_dump($this->problem); + +?> \ No newline at end of file Modified: website/application/default/views/scripts/error/error.phtml =================================================================== --- website/application/default/views/scripts/error/error.phtml 2008-09-25 11:11:35 UTC (rev 383) +++ website/application/default/views/scripts/error/error.phtml 2008-09-25 11:12:08 UTC (rev 384) @@ -1,2 +1,14 @@ -<?= $this->message ?> -<?= $this->content ?> \ No newline at end of file +<h1>An error occurred</h1> +<h2><?= $this->msg ?></h2> +<? if ('development' == $this->env): ?> +<h3>Exception information:</h3> + <p> + <b>Message:</b> <?= $this->exception->getMessage() ?> + </p> + + <h3>Stack trace:</h3> + <pre><?= $this->exception->getTraceAsString() ?></pre> + + <h3>Request Parameters:</h3> + <pre><? var_dump($this->request->getParams()) ?></pre> +<? endif ?> Deleted: website/application/default/views/scripts/index/board.phtml =================================================================== --- website/application/default/views/scripts/index/board.phtml 2008-09-25 11:11:35 UTC (rev 383) +++ website/application/default/views/scripts/index/board.phtml 2008-09-25 11:12:08 UTC (rev 384) @@ -1,81 +0,0 @@ -<table border="0" cellpadding="0" cellspacing="0" id="table"> - <tr> - <td><img src="images/back_deck.jpg" /></td> - <?php - foreach ($this->field->getEnemyPlayer()->getSpellCards() as $where => $card) - { - if ($card && $card instanceof Card) - { - echo '<td><img width="88" height="121" src="images/cards/'.($card->getReference()).'.jpg" /></td>'; - } - else - { - echo '<td><img src="images/back_monster.jpg" /></td>'; - } - } - ?> - <td><img src="images/back_fusion.jpg" /></td> - </tr> - - <tr> - <td><img src="images/back_grave.jpg" /></td> - <!--<td><img src="images/back_monster.jpg" /></td> - <td><img src="images/back_monster.jpg" /></td> - <td><img src="images/back_monster.jpg" /></td> - <td><img src="images/back_monster.jpg" /></td> - <td><img src="images/back_monster.jpg" /></td>--> - <?php - foreach ($this->field->getEnemyPlayer()->getMonsterCards() as $where => $card) - { - if ($card && $card instanceof Card) - { - echo '<td><img width="88" height="121" src="images/cards/'.($card->getReference()).'.jpg" /></td>'; - } - else - { - echo '<td><img src="images/back_monster.jpg" /></td>'; - } - } - ?> - <td><img src="images/back_field.jpg" /></td> - </tr> - - <tr> - <td><img src="images/back_field.jpg" /></td> - <?php - foreach ($this->field->getThisPlayer()->getMonsterCards() as $where => $card) - { - if ($card && $card instanceof Card) - { - echo '<td><img width="88" height="121" src="images/cards/'.($card->getReference()).'.jpg" /></td>'; - } - else - { - echo '<td><img src="images/back_monster.jpg" /></td>'; - } - } - ?> - <td><img src="images/back_grave.jpg" /></td> - </tr> - - <tr> - <td><img src="images/back_fusion.jpg" /></td> - <?php - foreach ($this->field->getEnemyPlayer()->getSpellCards() as $where => $card) - { - if ($card && $card instanceof Card) - { - echo '<td><img width="88" height="121" src="images/cards/'.($card->getReference()).'.jpg" /></td>'; - } - else - { - echo '<td><img src="images/back_monster.jpg" /></td>'; - } - } - ?> - <td><img src="images/back_deck.jpg" /></td> - </tr> -</table> -<!--<div id="elements"> -<?= /*$this->partialLoop('index/entry.phtml', $this->model)*/ '' ?> -</div>--> \ No newline at end of file Deleted: website/application/default/views/scripts/index/entry.phtml =================================================================== --- website/application/default/views/scripts/index/entry.phtml 2008-09-25 11:11:35 UTC (rev 383) +++ website/application/default/views/scripts/index/entry.phtml 2008-09-25 11:12:08 UTC (rev 384) @@ -1,5 +0,0 @@ -<div class="element"> - <div class="image"><img src="images/cards/<?= $this->reference ?>.jpg" /></div> - <div class="title"><?= $this->name ?></div> -</div> -<div class="clear"> </div> \ No newline at end of file Modified: website/application/default/views/scripts/index/index.phtml =================================================================== --- website/application/default/views/scripts/index/index.phtml 2008-09-25 11:11:35 UTC (rev 383) +++ website/application/default/views/scripts/index/index.phtml 2008-09-25 11:12:08 UTC (rev 384) @@ -1,5 +1 @@ -<form action="index/index" method="POST"> - Username: <input type="text" name="username" value="" /> - Password: <input type="password" name="password" value="" /> - <input type="submit" value="Login" /> -</form> \ No newline at end of file +<table cellspacing="1" cellpadding="8" border="0" width="100%"><tbody><tr><td width="100%" valign="top" class="name"><table cellspacing="0" cellpadding="0" border="0" width="100%"><tbody><tr><td bgcolor="#d0d4de" width="4" class="name"><img height="18" width="4" src="http://web.archive.org/web/20070323032459/http://acm.lviv.ua/"/></td><td nowrap="" bgcolor="#122a5b" width="*" class="name"> <font color="#d4d0e2"><b><small>Про систему</small></b><small/></font></td><td nowrap="" bgcolor="#122a5b" align="right" class="name"> <font color="#d4d0e2"><b><small> 05:24 23 березня 2007 року </small></b><small/></font></td></tr></tbody></table> <p style="font-size: 20px; font-family: arial; text-align: center;"><b>ACM Contester</b></p><p align="justify" style="font-size: 20px; font-family: arial; text-align: justify;"><font size="3">Ми, команда розробників цієї системи, дуже раді вітати Вас - учасників цієї системи. </font></p><p align="justify" style="font-size: 20px; font-family: arial; text-align: justify;"><font size="3">Тут Ви маєте можливість спробувати свої сили у розв'язанні різних типів задач. Змагайтесь!!!</font></p><p> </p></td></tr></tbody></table> \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:11:40
|
Revision: 383 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=383&view=rev Author: panzaboi Date: 2008-09-25 11:11:35 +0000 (Thu, 25 Sep 2008) Log Message: ----------- New Login Form: Dojo small fix Modified Paths: -------------- website/application/default/models/Index.php website/application/default/models/LoginForm.php Modified: website/application/default/models/Index.php =================================================================== --- website/application/default/models/Index.php 2008-09-25 11:10:50 UTC (rev 382) +++ website/application/default/models/Index.php 2008-09-25 11:11:35 UTC (rev 383) @@ -33,6 +33,4 @@ { return $this->select()->setIntegrityCheck(false)->from($this)->joinLeft('cards_x_users', 'cards_x_users.card_id=cards.id') ->where('cards_x_users.user_id = ?', $userid)->query()->fetchAll(); } -} - -?> \ No newline at end of file +} \ No newline at end of file Modified: website/application/default/models/LoginForm.php =================================================================== --- website/application/default/models/LoginForm.php 2008-09-25 11:10:50 UTC (rev 382) +++ website/application/default/models/LoginForm.php 2008-09-25 11:11:35 UTC (rev 383) @@ -1,64 +1,80 @@ <?php -class LoginForm extends Zend_Form +class LoginForm extends Zend_Dojo_Form { public $elementDecorators = array( - 'ViewHelper', + 'DijitElement', 'Errors', array('Label', array('class' => 'overlabel')), array('HtmlTag', array('tag' => 'div', 'class' => 'elcontainer')) ); public $buttonDecorators = array( - 'ViewHelper', + 'DijitElement', ); public function init() { - $this->addElementPrefixPath('Ostacium_Form', 'Ostacium/Form/'); + $translate = Zend_Registry::get('Zend_Translate'); + //$this->addElementPrefixPath('Ostacium_Form', 'Ostacium/Form/'); - $this->addElement('text', 'username', array( - 'decorators' => $this->elementDecorators, - 'filters' => array('StringTrim', 'StringToLower'), - 'validators' => array( + $this->addElement('ValidationTextBox', 'username', array( + 'decorators' => $this->elementDecorators, + 'filters' => array('StringTrim', 'StringToLower'), + 'validators' => array( array('StringLength', false, array(5, 50)), ), - 'required' => true, - 'title' => 'Username', - 'label' => 'Username:', + 'required' => true, + 'maxlength' => 50, + 'trim' => true, + 'lowercase' => true, + 'style' => 'height: 18px; width: 100px;', + 'regExp' => '[\S]{5,50}', + 'invalidMessage' => sprintf($translate->_('errorBetween'), 5, 50), + 'title' => 'Username', + 'label' => 'Username:', )); - - $this->addElement('password', 'password', array( - 'decorators' => $this->elementDecorators, - 'filters' => array('StringTrim'), - 'validators' => array( + + + + $this->addElement('PasswordTextBox', 'password', array( + 'decorators' => $this->elementDecorators, + 'filters' => array('StringTrim'), + 'validators' => array( 'Alnum', array('StringLength', false, array(5, 32)), ), - 'required' => true, - 'title' => 'Password', - 'label' => 'Password:', + 'required' => true, + 'trim' => true, + 'style' => 'height: 18px; width: 100px;', + 'regExp' => '^[a-z0-9]{5,32}$', + 'invalidMessage' => sprintf($translate->_('errorBetween'), 5, 32), + 'title' => 'Password', + 'label' => 'Password:', )); + + - $this->addElement('submit', 'loginbutton', array( - //array(array('HtmlTag', array('tag' => 'a', 'class' => 'loginR', 'placement' => 'prepend', 'href' => $this->getView()->url(array('module' => 'default', 'controller' => 'index', 'action' => 'register'), null, true), 'markup' => 'Реєстрація'))) - 'decorators' => array_merge($this->buttonDecorators), - 'required' => false, - 'ignore' => true, - 'class' => 'LoginL', - 'label' => 'Login', + $this->addElement('SubmitButton', 'loginbutton', array( + 'decorators' => $this->buttonDecorators, + 'required' => false, + 'ignore' => true, + 'label' => 'Login', )); - } public function loadDefaultDecorators() { +// $this->setDecorators(array( +// 'FormElements', +// 'Form', +// array('Description', array('placement' => 'prepend', 'tag' => 'div', 'class' => 'error')), +// )); + $this->setDecorators(array( - 'FormElements', - 'Form', - array('Description', array('placement' => 'prepend', 'tag' => 'div', 'class' => 'error')), - )); + 'FormElements', + 'DijitForm', + array('Description', array('placement' => 'prepend', 'tag' => 'div', 'class' => 'error')), + )); } -} - -?> \ No newline at end of file +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:10:52
|
Revision: 382 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=382&view=rev Author: panzaboi Date: 2008-09-25 11:10:50 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Error: New Error Management Index: LoginForm using Dojo Archive: list and view problems implemented Modified Paths: -------------- website/application/default/controllers/ArchieveController.php website/application/default/controllers/ErrorController.php website/application/default/controllers/IndexController.php Modified: website/application/default/controllers/ArchieveController.php =================================================================== --- website/application/default/controllers/ArchieveController.php 2008-09-25 11:10:06 UTC (rev 381) +++ website/application/default/controllers/ArchieveController.php 2008-09-25 11:10:50 UTC (rev 382) @@ -4,8 +4,17 @@ { public function indexAction() { - $this->_helper->getHelper('viewRenderer')->setNoRender(true); + $this->view->challenges = $this->_model->getChallenges(); } -} - -?> \ No newline at end of file + + public function viewAction() + { + $id = $this->_getParam('id'); + $problem = $this->_model->get($id); + + if (!$problem) + return $this->_forward('index', null, null, $this->_getAllParams() + array('message' => 'noProblem')); + + $this->view->problem = $problem; + } +} \ No newline at end of file Modified: website/application/default/controllers/ErrorController.php =================================================================== --- website/application/default/controllers/ErrorController.php 2008-09-25 11:10:06 UTC (rev 381) +++ website/application/default/controllers/ErrorController.php 2008-09-25 11:10:50 UTC (rev 382) @@ -4,33 +4,23 @@ { public function errorAction() { - $errors = $this->_getParam('error_handler'); - $this->_helper->getHelper('viewRenderer')->setNoRender(true); + $this->getResponse()->clearBody(); + $error = $this->_getParam('error_handler'); - switch ($errors->type) { + switch ($error->type) { case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_CONTROLLER: case Zend_Controller_Plugin_ErrorHandler::EXCEPTION_NO_ACTION: - // 404 error -- controller or action not found - $this->getResponse()->setRawHeader('HTTP/1.1 404 Not Found'); - - $content =<<<EOH -<h1>Error!</h1> -<p>The page you requested was not found.</p> -EOH; - break; + $this->getResponse()->setHttpResponseCode(404); + + $this->view->msg = $this->view->translate('error_404'); + break; default: - // application error - $content =<<<EOH -<h1>Error!</h1> -<p>An unexpected error occurred with your request. Please try again later.</p> -EOH; - break; + $this->view->msg = $this->view->translate('error_other'); + break; } - - // Clear previous content - $this->getResponse()->clearBody(); - $this->getResponse()->appendBody($content); + + $this->view->env = $this->getInvokeArg('environment'); + $this->view->exception = $error->exception; + $this->view->request = $error->request; } -} - -?> \ No newline at end of file +} \ No newline at end of file Modified: website/application/default/controllers/IndexController.php =================================================================== --- website/application/default/controllers/IndexController.php 2008-09-25 11:10:06 UTC (rev 381) +++ website/application/default/controllers/IndexController.php 2008-09-25 11:10:50 UTC (rev 382) @@ -4,31 +4,50 @@ { public function indexAction() { - $this->_helper->getHelper('viewRenderer')->setNoRender(true); - + echo $this->getLoginForm(); + } + + public function loginAction() + { $form = $this->getLoginForm(); if (!$this->getRequest()->isPost()) { - echo $form; - return; + return $this->_forward('index', null, null, $this->_getAllParams()); } if (!$form->isValid($this->getRequest()->getPost())) { - echo $form; - return; + $this->view->form = $form; + $this->renderScript('layout/loginform.phtml', 'login'); + return $this->_forward('index'); } $values = $form->getValues(); + $result = $this->_model->authoricate($values); if (!$result) { - $form->setDescription('Wrong Username/Password combination!'); - echo $form; - return; + $form->setDescription($this->view->translate('wrongEmailPwd')); + $this->view->form = $form; + $this->renderScript('layout/loginform.phtml', 'login'); + + return $this->_forward('index'); } + + $redirect = new Zend_Session_Namespace('Redirect'); + if ($redirect->to) + { + $this->getRequest()->setParam('redirect', $redirect->to); + $redirect->unsetAll(); + } + else + { + return $this->_redirect('/index/index'); + } + + $this->_helper->getHelper('viewRenderer')->setNoRender(true); } protected function getLoginForm() @@ -39,6 +58,4 @@ 'name' => 'loginform', )); } -} - -?> \ No newline at end of file +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:10:10
|
Revision: 381 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=381&view=rev Author: panzaboi Date: 2008-09-25 11:10:06 +0000 (Thu, 25 Sep 2008) Log Message: ----------- New pictures Modified Paths: -------------- website/httpdocs/images/logod.gif Added Paths: ----------- website/httpdocs/images/0.gif website/httpdocs/images/bg_menu.gif website/httpdocs/images/blok.png website/httpdocs/images/del.png website/httpdocs/images/disable.png website/httpdocs/images/enable.png website/httpdocs/images/fromarhive.jpg website/httpdocs/images/hide.jpg website/httpdocs/images/mail.jpg website/httpdocs/images/menu.gif website/httpdocs/images/menu_.gif website/httpdocs/images/pic1.jpg website/httpdocs/images/pixel.gif website/httpdocs/images/probstatus.png website/httpdocs/images/props.png website/httpdocs/images/reset.png website/httpdocs/images/rpic.gif website/httpdocs/images/show.jpg website/httpdocs/images/toarhive.jpg website/httpdocs/images/trash.gif website/httpdocs/images/unblok.png website/httpdocs/images/view.png website/httpdocs/images/visible.jpg Property changes on: website/httpdocs/images/0.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/bg_menu.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/blok.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/del.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/disable.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/enable.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/fromarhive.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/hide.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/mail.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/menu.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/menu_.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/pic1.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/pixel.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/probstatus.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/props.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/reset.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/rpic.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/show.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/toarhive.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/trash.gif ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/unblok.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/view.png ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: website/httpdocs/images/visible.jpg ___________________________________________________________________ Added: svn:mime-type + application/octet-stream This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:08:31
|
Revision: 380 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=380&view=rev Author: panzaboi Date: 2008-09-25 11:08:26 +0000 (Thu, 25 Sep 2008) Log Message: ----------- small fix (enviroment => environment) register ErrorHandler enable Dojo register Router at index -1 Modified Paths: -------------- website/library/Application.php Modified: website/library/Application.php =================================================================== --- website/library/Application.php 2008-09-25 11:06:47 UTC (rev 379) +++ website/library/Application.php 2008-09-25 11:08:26 UTC (rev 380) @@ -2,7 +2,7 @@ class Application { - protected $_enviroment; + protected $_environment; protected static $_approot; protected $_docroot; @@ -78,7 +78,7 @@ $frontController = $this->_setupFrontController(); // Setup Error Handler - $frontController->registerPlugin(new Zend_Controller_Plugin_ErrorHandler(array( + $frontController->registerPlugin(new Ostacium_Controller_Plugin_ErrorHandler(array( 'module' => $_config->auth->noacl->module, 'controller' => $_config->auth->noacl->controller, 'action' => $_config->auth->noacl->action @@ -101,7 +101,7 @@ Zend_Mail::setDefaultTransport($mail); $routerPlugin = new Ostacium_Controller_Plugin_Router($acl, $_config->auth->noauth->toArray(), $_config->auth->noacl->toArray()); - $frontController->registerPlugin($routerPlugin); + $frontController->registerPlugin($routerPlugin, -1); return $frontController; } @@ -152,6 +152,7 @@ $frontController = Zend_Controller_Front::getInstance(); $frontController->throwExceptions((bool) $_config->error->throw); + $frontController->setParam('environment', $this->_environment); $frontController->setControllerDirectory(array( 'default' => $this->_docroot . '/application/default/controllers', 'admin' => $this->_docroot . '/application/admin/controllers', @@ -176,6 +177,9 @@ // Setup Title //$view->placeholder('title')->set($_config->title); $view->headTitle($_config->title)->setSeparator($_config->titlesep); + // Setup Dojo + Zend_Dojo::enableView($view); + $viewRenderer = new Zend_Controller_Action_Helper_ViewRenderer($view); Zend_Controller_Action_HelperBroker::addHelper($viewRenderer); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:06:52
|
Revision: 379 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=379&view=rev Author: panzaboi Date: 2008-09-25 11:06:47 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Language Update Modified Paths: -------------- website/lang/en.csv website/lang/uk.csv Modified: website/lang/en.csv =================================================================== --- website/lang/en.csv 2008-09-25 11:05:52 UTC (rev 378) +++ website/lang/en.csv 2008-09-25 11:06:47 UTC (rev 379) @@ -1 +1,11 @@ -english;english \ No newline at end of file +# Labels +login;Login + +# Errors + +error_other;There was unknow error, please contact administrator +error_404;The page you requested was not found + +errorBetween;Value should be between %1$s and %2$s characters + +# Zend_Form Errors \ No newline at end of file Modified: website/lang/uk.csv =================================================================== --- website/lang/uk.csv 2008-09-25 11:05:52 UTC (rev 378) +++ website/lang/uk.csv 2008-09-25 11:06:47 UTC (rev 379) @@ -1 +1,11 @@ -english;\xC0\xED\xE3\xEB\xB3\xE9\xF1\xFC\xEA\xE0 \ No newline at end of file +# Labels +login;Login + +# Errors + +error_other;There was unknow error, please contact administrator +error_404;The page you requested was not found + +errorBetween;Value should be between %1$s and %2$s characters + +# Zend_Form Errors \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:05:54
|
Revision: 378 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=378&view=rev Author: panzaboi Date: 2008-09-25 11:05:52 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Changed routing to work with new ErrorHandler plug-in Modified Paths: -------------- website/library/Ostacium/Controller/Plugin/Router.php Modified: website/library/Ostacium/Controller/Plugin/Router.php =================================================================== --- website/library/Ostacium/Controller/Plugin/Router.php 2008-09-25 11:04:46 UTC (rev 377) +++ website/library/Ostacium/Controller/Plugin/Router.php 2008-09-25 11:05:52 UTC (rev 378) @@ -7,7 +7,7 @@ 'controller' => 'index', 'action' => 'index' ); - private $_noacl = array( /*'module' => 'default',*/ + private $_noacl = array( 'module' => 'default', 'controller' => 'error', 'action' => 'error' ); @@ -31,42 +31,31 @@ $module = $request->getModuleName(); $resource = ($module != 'default' ? $module . ':' . $controller : $controller); - try + if (!$this->_acl->has($resource)) { - if (!$this->_acl->isAllowed($role, $resource, $action)) { - if (!$auth->hasIdentity()) { - //$module = $this->_noauth['module']; - $controller = $this->_noauth['controller']; - $action = $this->_noauth['action']; - - $request->setParam('message', 'nologin'); - } else { - $module = $this->_noacl['module']; - $controller = $this->_noacl['controller']; - $action = $this->_noacl['action']; - - $request->setParam('message', 'noallowed'); - } - } + $e = new Zend_Controller_Dispatcher_Exception("Resource doesn't exist", 404); + + $response = $this->getResponse(); + $response->setException($e); + +// $module = $this->_noacl['module']; +// $controller = $this->_noacl['controller']; +// $action = $this->_noacl['action']; } - catch (Exception $e) - { - if (stripos($e->getMessage(), "Resource '{$resource}' not found") !== false) - { - $ee = new Zend_Controller_Dispatcher_Exception("Resource doesn't exist", 404); + elseif (!$this->_acl->isAllowed($role, $resource, $action)) { + if (!$auth->hasIdentity()) { + //$module = $this->_noauth['module']; + $controller = $this->_noauth['controller']; + $action = $this->_noauth['action']; - $response = $this->getResponse(); - $response->setException($ee); - + $request->setParam('message', 'nologin'); + } else { $module = $this->_noacl['module']; $controller = $this->_noacl['controller']; $action = $this->_noacl['action']; - $request->setDispatched(true); + $request->setParam('message', 'noallowed'); } - else { - throw $e; - } } $request->setModuleName($module); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:04:49
|
Revision: 377 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=377&view=rev Author: panzaboi Date: 2008-09-25 11:04:46 +0000 (Thu, 25 Sep 2008) Log Message: ----------- custom ErrorHandler to handle preDispatched NO_CONTROLLER and NO_ACTION exceptions. Added Paths: ----------- website/library/Ostacium/Controller/Plugin/ErrorHandler.php Added: website/library/Ostacium/Controller/Plugin/ErrorHandler.php =================================================================== --- website/library/Ostacium/Controller/Plugin/ErrorHandler.php (rev 0) +++ website/library/Ostacium/Controller/Plugin/ErrorHandler.php 2008-09-25 11:04:46 UTC (rev 377) @@ -0,0 +1,64 @@ +<?php + +class Ostacium_Controller_Plugin_ErrorHandler extends Zend_Controller_Plugin_ErrorHandler +{ + protected $_isPreDispatch = false; + + public function preDispatch(Zend_Controller_Request_Abstract $request) + { + $frontController = Zend_Controller_Front::getInstance(); + $dispatcher = $frontController->getDispatcher(); + $response = $this->getResponse(); + + if ($frontController->getParam('noErrorHandler') || $this->_isInsideErrorHandlerLoop) { + return; + } + + $error = new ArrayObject(array(), ArrayObject::ARRAY_AS_PROPS); + $error->exception = current($response->getException()); + + if (!$dispatcher->isDispatchable($request)) { + $error->type = self::EXCEPTION_NO_CONTROLLER; + } elseif (!$this->isProperAction($dispatcher, $request)) { + $error->type = self::EXCEPTION_NO_ACTION; + } + + if (isset($error->type)) { + $this->_isInsideErrorHandlerLoop = true; + $this->_isPreDispatch = true; + $this->_exceptionCountAtFirstEncounter = count($response->getException()); + + $error->request = clone $request; + $request->setParam('error_handler', $error) + ->setModuleName($this->getErrorHandlerModule()) + ->setControllerName($this->getErrorHandlerController()) + ->setActionName($this->getErrorHandlerAction()); + } + } + + public function postDispatch(Zend_Controller_Request_Abstract $request) + { + $response = $this->getResponse(); + if (!$this->_isInsideErrorHandlerLoop && count($response->getException()) > $this->_exceptionCountAtFirstEncounter) + { + parent::postDispatch($request); + } + + } + + public function isProperAction($dispatcher, $request) + { + $className = $dispatcher->loadClass($dispatcher->getControllerClass($request)); + $actionName = $request->getActionName(); + if (empty($actionName)) { + $actionName = $dispatcher->getDefaultAction(); + } + $methodName = $dispatcher->formatActionName($actionName); + + $class = new ReflectionClass($className); + if ($class->hasMethod($methodName)) { + return true; + } + return false; + } +} \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-25 11:03:52
|
Revision: 376 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=376&view=rev Author: panzaboi Date: 2008-09-25 11:03:47 +0000 (Thu, 25 Sep 2008) Log Message: ----------- small fix Modified Paths: -------------- website/library/Ostacium/Db/Table.php Modified: website/library/Ostacium/Db/Table.php =================================================================== --- website/library/Ostacium/Db/Table.php 2008-09-25 09:13:17 UTC (rev 375) +++ website/library/Ostacium/Db/Table.php 2008-09-25 11:03:47 UTC (rev 376) @@ -9,7 +9,11 @@ public function get($pPrimaryKey) { - return parent::find($pPrimaryKey)->current()->toArray(); + $get = parent::find($pPrimaryKey)->current(); + if ($get) + return $get->toArray(); + else + return $get; } public function insert($data) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-25 09:14:23
|
Revision: 375 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=375&view=rev Author: brus07 Date: 2008-09-25 09:13:17 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Added logging to file when return Exception message. Modified Paths: -------------- ACMServer/trunk/ACMServer/Runner/Class1.cs Modified: ACMServer/trunk/ACMServer/Runner/Class1.cs =================================================================== --- ACMServer/trunk/ACMServer/Runner/Class1.cs 2008-09-25 07:49:52 UTC (rev 374) +++ ACMServer/trunk/ACMServer/Runner/Class1.cs 2008-09-25 09:13:17 UTC (rev 375) @@ -92,6 +92,7 @@ } catch (Exception tex) { + log.Loging("Runner:GetResult - Exception (" + tex.ToString() + ": " + tex.Message, Log.Priority.INFO); result.res = "Exception"; } return result.ToStringX(); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-25 07:49:58
|
Revision: 374 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=374&view=rev Author: brus07 Date: 2008-09-25 07:49:52 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Small refactoring Modified Paths: -------------- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs 2008-09-25 07:47:17 UTC (rev 373) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs 2008-09-25 07:49:52 UTC (rev 374) @@ -10,17 +10,17 @@ internal delegate bool SebdDataDelegate(SystemMessage s); internal event SebdDataDelegate onSendData; - - Dictionary<SystemMessage, object> poolWork = new Dictionary<SystemMessage, object>(); - bool poolWorking = false; - private bool OnSendData(SystemMessage sysMes) { if (onSendData != null) return onSendData(sysMes); + //TODO: ne znaju sho same maje povertatysja u takomu vypadku return false; } + private Dictionary<SystemMessage, object> poolWork = new Dictionary<SystemMessage, object>(); + private bool poolWorking = false; + private void runPool() { if (poolWorking == true) @@ -35,17 +35,17 @@ break; foreach (SystemMessage sysMes in poolWork.Keys) { + //TODO: potribno zrobyty, shot pry posylci "poolWork" ne buv zalokanyj if (OnSendData(sysMes) == true) { poolWork.Remove(sysMes); - break; } } } } poolWorking = false; } - private static void RunningPool(Object ob) + private static void StartPool(Object ob) { WorkingPool ssg = (WorkingPool)ob; ssg.runPool(); @@ -54,7 +54,7 @@ { if (poolWorking == false) { - ThreadPool.QueueUserWorkItem(RunningPool, this); + ThreadPool.QueueUserWorkItem(StartPool, this); } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-25 07:47:19
|
Revision: 373 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=373&view=rev Author: brus07 Date: 2008-09-25 07:47:17 +0000 (Thu, 25 Sep 2008) Log Message: ----------- Moved LogDataGridView.dll to Resource folder Modified Paths: -------------- ACMServer/trunk/ACMServer/Tester/Tester.csproj Added Paths: ----------- ACMServer/trunk/ACMServer/Resource/LogDataGridView.dll Removed Paths: ------------- ACMServer/trunk/ACMServer/Tester/LogDataGridView.dll Property changes on: ACMServer/trunk/ACMServer/Resource/LogDataGridView.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: svn:mergeinfo + Modified: ACMServer/trunk/ACMServer/Tester/Tester.csproj =================================================================== --- ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-24 19:51:37 UTC (rev 372) +++ ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-25 07:47:17 UTC (rev 373) @@ -28,7 +28,10 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="LogDataGridView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" /> + <Reference Include="LogDataGridView, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL"> + <SpecificVersion>False</SpecificVersion> + <HintPath>..\Resource\LogDataGridView.dll</HintPath> + </Reference> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Deployment" /> @@ -87,11 +90,6 @@ <Name>LibraryExtention</Name> </ProjectReference> </ItemGroup> - <ItemGroup> - <Content Include="LogDataGridView.dll"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Or...@us...> - 2008-09-24 19:51:55
|
Revision: 372 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=372&view=rev Author: Oracle_ Date: 2008-09-24 19:51:37 +0000 (Wed, 24 Sep 2008) Log Message: ----------- Fixed bug with waiting for files. Modified Paths: -------------- ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/Program.cs ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/bin/Debug/problem/ProblemData.txt ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.cpp ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.h ACMServer/trunk/sharp tester/SourceTest 2.0/Test/SecureClass.cpp ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.h Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/Program.cs =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/Program.cs 2008-09-22 20:14:18 UTC (rev 371) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/Program.cs 2008-09-24 19:51:37 UTC (rev 372) @@ -13,7 +13,7 @@ { Console.SetOut(File.CreateText("D:\\logout.txt")); string[] data=File.ReadAllLines("InData.txt"); - for (int ind = 1; ind <= 1; ind++) + for (int ind = 1; ind <= 5; ind++) { string src = File.ReadAllText("src\\source" + ind.ToString() + ".txt"); TestEnv test = new TestEnv(src, data[0], data[1], data[2]); Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/bin/Debug/problem/ProblemData.txt =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/bin/Debug/problem/ProblemData.txt 2008-09-22 20:14:18 UTC (rev 371) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/SourceTest 2.0/bin/Debug/problem/ProblemData.txt 2008-09-24 19:51:37 UTC (rev 372) @@ -4,6 +4,6 @@ OutputLimit: 1024 RealTimeLimit: 20000 TimeLimit: 1000 -MaxThreads: 4 +MaxThreads: 16 Checker: scriptExample.txt CheckPlugin: Plugin.dll \ No newline at end of file Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.cpp =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.cpp 2008-09-22 20:14:18 UTC (rev 371) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.cpp 2008-09-24 19:51:37 UTC (rev 372) @@ -28,7 +28,7 @@ { if (!File::Exists(ExeFile)) break; - System::Threading::Thread::Sleep(1); + System::Threading::Thread::Sleep(10); } } @@ -37,9 +37,14 @@ si->CreateNoWindow=true; StreamWriter^ src=File::CreateText(srcpath); src->Write(source); + src->Flush(); src->Close(); - WaitForFile(srcpath); + System::Threading::Thread::Sleep(CONST_SLEEP); + for (int i=0;i<CONST_SLEEP;i++) + if (!File::Exists(srcpath)) + System::Threading::Thread::Sleep(5); else + break; si->FileName=comppath; si->Arguments="\""+srcpath+"\" \""+temp; @@ -57,7 +62,10 @@ } UsedTime=comp->TotalProcessorTime; - WaitForFile(ExeFile); + for (int i=0;i<CONST_SLEEP;i++) + if (!File::Exists(ExeFile)) + System::Threading::Thread::Sleep(5); else + break; if (!File::Exists(ExeFile)) //compilation error { @@ -74,24 +82,4 @@ { comp->Close(); } -} - -void Compiler::WaitForFile(String^ FileName) -{ - for (int i=0;i<CONST_SLEEP;++i) - if (!File::Exists(FileName)) - System::Threading::Thread::Sleep(1); - for (int i=0;i<CONST_SLEEP;++i) - { - try - { - FileStream^ f=File::OpenRead(FileName); - f->Close(); - break; - } catch(...) - { - System::Threading::Thread::Sleep(1); - continue; - } - } } \ No newline at end of file Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.h =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.h 2008-09-22 20:14:18 UTC (rev 371) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Test/CompileClass.h 2008-09-24 19:51:37 UTC (rev 372) @@ -22,7 +22,6 @@ String^ comppath; String^ source; String^ temp; - void WaitForFile(String^ FileName); public: String^ Details; CompRes Result; Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Test/SecureClass.cpp =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/SecureClass.cpp 2008-09-22 20:14:18 UTC (rev 371) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Test/SecureClass.cpp 2008-09-24 19:51:37 UTC (rev 372) @@ -1,4 +1,3 @@ - #include "SecureClass.h" #include <Lm.h> #include <Userenv.h> Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp 2008-09-22 20:14:18 UTC (rev 371) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp 2008-09-24 19:51:37 UTC (rev 372) @@ -24,7 +24,7 @@ exe=ExeFile; prob=ProblemPath; temp=TempPath; - TestAll=true; + FTestAll=true; SecType=secure; CONST_SLEEP=WaitForFile; } @@ -72,6 +72,7 @@ lock(); bufW=(wchar_t*)Marshal::StringToHGlobalUni(exe).ToPointer(); unlock(); + if (!sec->Init(bufW)) { int err=sec->LastError(); @@ -87,6 +88,7 @@ Marshal::FreeHGlobal(IntPtr(bufW)); return false; } + if (sec->CheckSecure()) { result->res=TestResult::DestrictedFunction; @@ -94,6 +96,7 @@ Marshal::FreeHGlobal(IntPtr(bufW)); return false; } + if (!sec->CreateProc(bufW,TRUE,CREATE_SUSPENDED|CREATE_NO_WINDOW|ABOVE_NORMAL_PRIORITY_CLASS,&si)) { Marshal::FreeHGlobal(IntPtr(bufW)); @@ -118,6 +121,7 @@ } Marshal::FreeHGlobal(IntPtr(bufW)); + job=CreateJobObject(NULL,NULL); mem.BasicLimitInformation.LimitFlags=JOB_OBJECT_LIMIT_JOB_MEMORY; mem.JobMemoryLimit=data->MemoryLimit; @@ -250,8 +254,11 @@ CloseHandle(si.hStdOutput);si.hStdOutput=NULL; CloseHandle(si.hStdInput);si.hStdInput=NULL; - WaitForFile(oupath); - + for (int i=0;i<CONST_SLEEP;i++) + if (!File::Exists(oupath)) + Sleep(5); else + break; + if (!File::Exists(oupath)) { result->res=TestResult::WrongAnswer; @@ -259,10 +266,8 @@ return false; } - WaitForFile(oupath); + Checker^ check=gcnew Tester::Checker(Path::GetFullPath(data->Checker),test->tests[index-1]->input,ReadAllFile(oupath),test->tests[index-1]->output); - Checker^ check=gcnew Tester::Checker(Path::GetFullPath(data->Checker),test->tests[index-1]->input,File::ReadAllText(oupath),test->tests[index-1]->output); - switch (check->Check()) { case CheckResult::OE: @@ -320,11 +325,7 @@ if (n<=test->tests->Length) { if (!ExecuteTest(n)) - { - lock(); StopTest=true; - unlock(); - } } else break; } @@ -332,7 +333,7 @@ void Runner::RunTests() { - StopTest=false; + FStopTest=false; CurrentTest=0; threads=gcnew array<Threading::Thread^>(min(data->MaxThreads,testfield->tests->Length)); for (int i=0;i<threads->Length;i++) @@ -381,22 +382,19 @@ LeaveCriticalSection(cs); } -void Runner::WaitForFile(String^ FileName) +String^ Runner::ReadAllFile(String^ FileName) { for (int i=0;i<CONST_SLEEP;++i) - if (!File::Exists(FileName)) - Sleep(1); - for (int i=0;i<CONST_SLEEP;++i) { try { - FileStream^ f=File::OpenRead(FileName); - f->Close(); - break; + String^ res=File::ReadAllText(FileName); + return res; } catch(...) { - Sleep(1); + Sleep(5); continue; } } + return ""; } \ No newline at end of file Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.h =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.h 2008-09-22 20:14:18 UTC (rev 371) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.h 2008-09-24 19:51:37 UTC (rev 372) @@ -70,7 +70,31 @@ String^ temp; String^ exe; void ThreadProc(); - bool StopTest; //true if testing should be stopped + bool FStopTest; + + property bool StopTest + { + bool get() + { + try + { + lock(); + return FStopTest; + } finally + { + unlock(); + } + } + + void set(bool value) + { + lock(); + FStopTest=value; + unlock(); + } + } + + bool FTestAll; array<Threading::Thread^>^ threads; int CurrentTest; //next test needed to be tested @@ -79,14 +103,13 @@ void destroylock(); void lock(); //locks access to other theads void unlock(); //unlocks access to other threads - void WaitForFile(String^ FileName); //waits for file handle + String^ ReadAllFile(String^ FileName); //waits for file handle and returns all file text TestLoader^ testfield; DataLoader^ datafield; PluginLoader^ plugfield; public: array<TestRes^>^ results; - bool TestAll; //set false if break testing after ExecuteTest return false (not AC) SecureType SecType; int CONST_SLEEP; @@ -95,7 +118,29 @@ void RunTests(); void TerminateThreads(); ~Runner(); + + property bool TestAll //set false if break testing after ExecuteTest return false (not AC) + { + bool get() + { + try + { + lock(); + return FTestAll; + } finally + { + unlock(); + } + } + void set(bool value) + { + lock(); + FTestAll=value; + unlock(); + } + } + property TestLoader^ test { TestLoader^ get() This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Or...@us...> - 2008-09-22 20:24:23
|
Revision: 371 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=371&view=rev Author: Oracle_ Date: 2008-09-22 20:14:18 +0000 (Mon, 22 Sep 2008) Log Message: ----------- Fixed BUG with NULL reference to sec in Test.cpp. Modified Paths: -------------- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp 2008-09-22 12:18:18 UTC (rev 370) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp 2008-09-22 20:14:18 UTC (rev 371) @@ -291,9 +291,11 @@ lock(); results[index-1]=result; unlock(); - sec->Finalize(); if (sec!=NULL) + { + sec->Finalize(); delete sec; + } if (si.hStdInput!=NULL) CloseHandle(si.hStdInput); if (si.hStdOutput!=NULL) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-22 12:18:25
|
Revision: 370 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=370&view=rev Author: brus07 Date: 2008-09-22 12:18:18 +0000 (Mon, 22 Sep 2008) Log Message: ----------- Added helper file, for understand where will be ZendFramework. Added Paths: ----------- website/library/Zend/Library_Zend here.txt This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-22 11:52:17
|
Revision: 369 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=369&view=rev Author: brus07 Date: 2008-09-22 11:52:05 +0000 (Mon, 22 Sep 2008) Log Message: ----------- Connected new (2.0) SharpTester version. But now, *.dll files copy to Runner directory and included to project. Modified Paths: -------------- ACMServer/trunk/ACMServer/Runner/Class1.cs ACMServer/trunk/ACMServer/Runner/InData.txt ACMServer/trunk/ACMServer/Runner/Runner.csproj ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs Added Paths: ----------- ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt ACMServer/trunk/ACMServer/Runner/Checker.dll ACMServer/trunk/ACMServer/Runner/Load.dll ACMServer/trunk/ACMServer/Runner/Main.dll ACMServer/trunk/ACMServer/Runner/MutanticFramework.dll ACMServer/trunk/ACMServer/Runner/Plugin.dll ACMServer/trunk/ACMServer/Runner/ScriptDotNet.dll ACMServer/trunk/ACMServer/Runner/Test.dll ACMServer/trunk/ACMServer/Runner/TesterInData.txt ACMServer/trunk/ACMServer/Runner/VirtualPlugin.dll ACMServer/trunk/ACMServer/Runner/scriptExample.txt Removed Paths: ------------- ACMServer/trunk/ACMServer/Runner/SourceTest.dll Property Changed: ---------------- ACMServer/trunk/ACMServer/Runner/ Property changes on: ACMServer/trunk/ACMServer/Runner ___________________________________________________________________ Modified: svn:ignore - bin obj + bin obj *.user Added: ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt (rev 0) +++ ACMServer/trunk/ACMServer/Runner/AllowedFunc.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -0,0 +1,57 @@ +kernel32.dll DeleteCriticalSection +kernel32.dll LeaveCriticalSection +kernel32.dll EnterCriticalSection +kernel32.dll InitializeCriticalSection +kernel32.dll VirtualFree +kernel32.dll VirtualAlloc +kernel32.dll LocalFree +kernel32.dll LocalAlloc +kernel32.dll GetVersion +kernel32.dll GetCurrentThreadId +kernel32.dll GetThreadLocale +kernel32.dll GetStartupInfoA +kernel32.dll GetLocaleInfoA +kernel32.dll GetCommandLineA +kernel32.dll FreeLibrary +kernel32.dll ExitProcess +kernel32.dll WriteFile +kernel32.dll UnhandledExceptionFilter +kernel32.dll RtlUnwind +kernel32.dll RaiseException +kernel32.dll GetStdHandle +user32.dll GetKeyboardType +user32.dll MessageBoxA +advapi32.dll RegQueryValueExA +advapi32.dll RegOpenKeyExA +advapi32.dll RegCloseKey +kernel32.dll TlsSetValue +kernel32.dll TlsGetValue +kernel32.dll GetModuleHandleA +kernel32.dll WideCharToMultiByte +kernel32.dll lstrlenA +kernel32.dll lstrcpynA +kernel32.dll LoadLibraryExA +kernel32.dll GetProcAddress +kernel32.dll GetModuleFileNameA +kernel32.dll FindFirstFileA +kernel32.dll FindClose +user32.dll LoadStringA +user32.dll CharNextA +oleaut32.dll SysFreeString +kernel32.dll VirtualQuery +kernel32.dll GetVersionExA +kernel32.dll GetStringTypeExA +kernel32.dll GetDiskFreeSpaceA +kernel32.dll GetCPInfo +kernel32.dll GetACP +kernel32.dll EnumCalendarInfoA +user32.dll GetSystemMetrics +user32.dll CharToOemA +kernel32.dll GetLastError +kernel32.dll SetFilePointer +kernel32.dll SetEndOfFile +kernel32.dll ReadFile +kernel32.dll GetFileSize +kernel32.dll GetFileType +kernel32.dll CreateFileA +kernel32.dll CloseHandle \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/Checker.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: ACMServer/trunk/ACMServer/Runner/Class1.cs =================================================================== --- ACMServer/trunk/ACMServer/Runner/Class1.cs 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Runner/Class1.cs 2008-09-22 11:52:05 UTC (rev 369) @@ -1,27 +1,16 @@ using System; using System.Collections.Generic; using System.Text; -using SourceTest; using System.IO; using AcmContester.Library.LibraryExtention; using AcmContester.Library.LibraryExtention.Data; +using Main; +using Test; namespace Checker { public class Checker { - static void func(int x, TResult res) - { - Console.WriteLine("test number {0}, result: {1}, details: {2}", x, TSource.TestResultToString(res.res), res.Details); - } - - static void funcWithLog(int x, TResult res) - { - Log log = Log.GetLog(); - log.Loging(" Test #" + x + " Details " + res.Details + "\xA0\n", Log.Priority.INFO); - //Console.WriteLine("test number {0}, result: {1}, details: {2}", x, TSource.TestResultToString(res.res), res.Details); - } - public static string GetResult(string message) { Log log = Log.GetLog(); @@ -34,52 +23,77 @@ string code = submit.sourceCode; string id = submit.id.ToString(); - TSource c = new TSource(); - StreamReader s = new StreamReader("InData.txt", Encoding.Default); - String compiler = s.ReadLine(); - String problem = s.ReadLine(); - String temp = s.ReadLine(); - String source = s.ReadLine(); - s.Close(); - //s = File.OpenText(source); - c.CompPath = compiler; - c.ProblemPath = problem; - c.LoadLimits(); - c.Src = code; - //c.Src = s.ReadToEnd(); - //s.Close(); - c.TempPath = temp; - c.TestHandler += new TTestHandler(funcWithLog); - c.Language = (TLang)1; - c.ProcessAll(); - c.State = (TSourceState)6; - log.Loging("Compile result: " + TSource.CompileResultToString(c.Summary.compres.res) + "\nCompilation details: " + c.Summary.compres.Details + "\nUsed Time for compile: " + c.Summary.compres.UsedTime, Log.Priority.INFO); - //Console.WriteLine("Compile result: {0}\nCompilation details: {1}\nUsed Time for compile: {2}", TSource.CompileResultToString(c.Summary.compres.res), c.Summary.compres.Details, c.Summary.compres.UsedTime); - log.Loging("Test result: " + TSource.TestResultToString(c.Summary.res.res), Log.Priority.INFO); - //Console.WriteLine("Test result: {0}", TSource.TestResultToString(c.Summary.res.res)); - log.Loging("Points: " + c.Summary.res.points, Log.Priority.INFO); - //Console.WriteLine("Points: {0}", c.Summary.res.points); - log.Loging("Used Time: " + c.Summary.res.UsedTime, Log.Priority.INFO); - //Console.WriteLine("Used Time: {0}", c.Summary.res.UsedTime); - log.Loging("Used Memory: " + c.Summary.res.UsedMemory, Log.Priority.INFO); - //Console.WriteLine("Used Memory: {0}", c.Summary.res.UsedMemory); - log.Loging("Used Real Time: " + c.Summary.res.UsedRealTime, Log.Priority.INFO); - //Console.WriteLine("Used Real Time: {0}", c.Summary.res.UsedRealTime); - //Console.ReadKey(); - log.Loging("----------------------------------------------------", Log.Priority.INFO); - log.Loging("", Log.Priority.INFO); + Result result = new Result(submit); - if (c.Summary.compres.res != (TCompRes)0 ) + try { - Result resulta = new Result(submit); - resulta.res = TSource.CompileResultToString(c.Summary.compres.res); - return resulta.ToStringX(); + //Console.SetOut(File.CreateText("logout.txt")); + string[] data = File.ReadAllLines("InData.txt"); + + string src = code; + TestEnv test = new TestEnv(src, data[0], data[1], data[2]); + test.Compile(); + + log.Loging("------------------BEGIN SOURCE--------------------------", Log.Priority.INFO); + Console.WriteLine("------------------BEGIN SOURCE--------------------------"); + + log.Loging(src, Log.Priority.INFO); + Console.WriteLine(src); + + log.Loging("-------------------END SOURCE---------------------------", Log.Priority.INFO); + Console.WriteLine("-------------------END SOURCE---------------------------"); + + log.Loging(String.Format("Compile result: {0}, details: {1}, usedtime:{2}", test.comp.Result.ToString(), test.comp.Details, test.comp.UsedTime), Log.Priority.INFO); + Console.WriteLine("Compile result: {0}, details: {1}, usedtime:{2}", test.comp.Result.ToString(), test.comp.Details, test.comp.UsedTime); + + log.Loging(String.Format("Comp Output: {0}", test.comp.CompilerOutput), Log.Priority.INFO); + Console.WriteLine("Comp Output: {0}", test.comp.CompilerOutput); + + if (test.comp.Result == Test.CompRes.OK) + { + test.RunAllTests(SecureType.Double); + + for (int i = 0; i < test.run.results.Length; i++) + { + log.Loging(String.Format("Test #{0} result: {1}, details: {2}, usedtime:{3}, usedRealTime: {4}, usedmemory: {5}", i + 1, + test.run.results[i].res, test.run.results[i].Details, test.run.results[i].UsedTime, test.run.results[i].UsedRealTime, test.run.results[i].UsedMemory), Log.Priority.INFO); + Console.WriteLine("Test #{0} result: {1}, details: {2}, usedtime:{3}, usedRealTime: {4}, usedmemory: {5}", i + 1, + test.run.results[i].res, test.run.results[i].Details, test.run.results[i].UsedTime, test.run.results[i].UsedRealTime, test.run.results[i].UsedMemory); + } + } + + + //TODO: + result.res = test.comp.Result.ToString(); + if (test.comp.Result == Test.CompRes.OK) + { + int usedTime = -1; + int usedMemory = -1; + for (int i = 0; i < test.run.results.Length; i++) + { + if (test.run.results[i].res == TestResult.Accepted) + { + usedTime = Math.Max(usedTime, test.run.results[i].UsedTime); + usedMemory = Math.Max(usedMemory, test.run.results[i].UsedMemory); + result.res = test.run.results[i].res.ToString(); + } + else + { + result.res = test.run.results[i].res.ToString(); + break; + } + } + if (result.res == TestResult.Accepted.ToString()) + { + result.usedMemory = usedTime; + result.usedTime = usedMemory; + } + } } - //TODO: - Result result = new Result(submit); - result.res = TSource.TestResultToString(c.Summary.res.res); - result.usedMemory = c.Summary.res.UsedMemory; - result.usedTime = c.Summary.res.UsedTime; + catch (Exception tex) + { + result.res = "Exception"; + } return result.ToStringX(); } } Modified: ACMServer/trunk/ACMServer/Runner/InData.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/InData.txt 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Runner/InData.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -1,4 +1,3 @@ -d:\SAMPLE\Compillers\D7.bat -d:\SAMPLE\Test\ -d:\SAMPLE\Temp\ -d:\SAMPLE\source.txt +d:\Sample\Compiler\D7.bat +d:\Sample\Temp\ +d:\Sample\Problem\ \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/Load.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/Main.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/MutanticFramework.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/Plugin.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Modified: ACMServer/trunk/ACMServer/Runner/Runner.csproj =================================================================== --- ACMServer/trunk/ACMServer/Runner/Runner.csproj 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Runner/Runner.csproj 2008-09-22 11:52:05 UTC (rev 369) @@ -28,24 +28,17 @@ <WarningLevel>4</WarningLevel> </PropertyGroup> <ItemGroup> - <Reference Include="SourceTest, Version=1.0.3077.22878, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>.\SourceTest.dll</HintPath> - </Reference> + <Reference Include="Main, Version=1.0.0.0, Culture=neutral, processorArchitecture=MSIL" /> <Reference Include="System" /> <Reference Include="System.Data" /> <Reference Include="System.Xml" /> + <Reference Include="Test, Version=1.0.3187.73, Culture=neutral, processorArchitecture=x86" /> </ItemGroup> <ItemGroup> <Compile Include="Class1.cs" /> <Compile Include="Properties\AssemblyInfo.cs" /> </ItemGroup> <ItemGroup> - <Content Include="InData.txt"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - </ItemGroup> - <ItemGroup> <ProjectReference Include="..\Library\Data\Data.csproj"> <Project>{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}</Project> <Name>Data</Name> @@ -55,6 +48,44 @@ <Name>LibraryExtention</Name> </ProjectReference> </ItemGroup> + <ItemGroup> + <Content Include="AllowedFunc.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Checker.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="InData.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Load.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Main.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="MutanticFramework.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Plugin.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="ScriptDotNet.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="scriptExample.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="Test.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="TesterInData.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + <Content Include="VirtualPlugin.dll"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + </ItemGroup> <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> <!-- To modify your build process, add your task inside one of the targets below and uncomment it. Other similar extension points exist, see Microsoft.Common.targets. Property changes on: ACMServer/trunk/ACMServer/Runner/ScriptDotNet.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Property changes on: ACMServer/trunk/ACMServer/Runner/Test.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: ACMServer/trunk/ACMServer/Runner/TesterInData.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/TesterInData.txt (rev 0) +++ ACMServer/trunk/ACMServer/Runner/TesterInData.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -0,0 +1,3 @@ +100 +TestingUser +USER12345 \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/VirtualPlugin.dll ___________________________________________________________________ Added: svn:mime-type + application/octet-stream Added: ACMServer/trunk/ACMServer/Runner/scriptExample.txt =================================================================== --- ACMServer/trunk/ACMServer/Runner/scriptExample.txt (rev 0) +++ ACMServer/trunk/ACMServer/Runner/scriptExample.txt 2008-09-22 11:52:05 UTC (rev 369) @@ -0,0 +1,3 @@ +if (output==correctOutput) +result='AC'; +else result='WA'; \ No newline at end of file Modified: ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-09-21 08:13:45 UTC (rev 368) +++ ACMServer/trunk/ACMServer/Tester/Library/SocketClientGate.cs 2008-09-22 11:52:05 UTC (rev 369) @@ -10,8 +10,8 @@ { private string descriptionMessage = ""; - public delegate void DataArrivedDelegate(SystemMessage s); - public event DataArrivedDelegate onDataArrived; + public new delegate void DataArrivedDelegate(SystemMessage s); + public new event DataArrivedDelegate onDataArrived; public SocketClientGate(string IP) : base(IP) This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <Or...@us...> - 2008-09-21 08:13:53
|
Revision: 368 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=368&view=rev Author: Oracle_ Date: 2008-09-21 08:13:45 +0000 (Sun, 21 Sep 2008) Log Message: ----------- Added global exception. Modified Paths: -------------- ACMServer/trunk/sharp tester/SourceTest 2.0/Main/TestEnvClass.cs ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Main/TestEnvClass.cs =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Main/TestEnvClass.cs 2008-09-20 22:01:36 UTC (rev 367) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Main/TestEnvClass.cs 2008-09-21 08:13:45 UTC (rev 368) @@ -7,16 +7,11 @@ { public class TesterException : ApplicationException { + public TesterException(string message,Exception innerException) : base(message,innerException) { } public TesterException(string message) : base(message) { } public TesterException() : base() { } } - public class IncorrectFileException : ApplicationException - { - public IncorrectFileException(string message) : base(message) { } - public IncorrectFileException() : base() { } - } - public class TestEnv { public string ProblemPath; @@ -28,74 +23,111 @@ public TestEnv(string Source,string CompPath,string TempPath,string ProblemPath) { - this.Source = Source; - this.TempPath = Path.GetFullPath(TempPath); - if (!Directory.Exists(this.TempPath)) - Directory.CreateDirectory(this.TempPath); - this.CompPath = Path.GetFullPath(CompPath); - if (!File.Exists(this.CompPath)) - throw new FileNotFoundException("Compiler file do not exists!"); - this.ProblemPath = Path.GetFullPath(ProblemPath); - if (!Directory.Exists(this.ProblemPath)) - throw new DirectoryNotFoundException("Problem path do not exists!"); + try + { + this.Source = Source; + this.TempPath = Path.GetFullPath(TempPath); + if (!Directory.Exists(this.TempPath)) + Directory.CreateDirectory(this.TempPath); + this.CompPath = Path.GetFullPath(CompPath); + if (!File.Exists(this.CompPath)) + throw new FileNotFoundException("Compiler file do not exists!"); + this.ProblemPath = Path.GetFullPath(ProblemPath); + if (!Directory.Exists(this.ProblemPath)) + throw new DirectoryNotFoundException("Problem path do not exists!"); + } + catch (Exception e) + { + throw new TesterException("Exception in creating TestEnv",e); + } } public void Compile() { - if (comp == null) + try { - if (!File.Exists(ProblemPath + "ProblemData.txt")) - throw new FileNotFoundException("ProblemData.txt do not exists"); - DataLoader dat = new DataLoader(ProblemPath + "ProblemData.txt"); - if (!dat.Load()) - throw new IncorrectFileException("Can not load data from ProblemData.txt"); + if (comp == null) + { + if (!File.Exists(ProblemPath + "ProblemData.txt")) + throw new FileNotFoundException("ProblemData.txt do not exists"); + DataLoader dat = new DataLoader(ProblemPath + "ProblemData.txt"); + if (!dat.Load()) + throw new FileLoadException("Can not load data from ProblemData.txt"); - if (!File.Exists("TesterInData.txt")) - throw new FileNotFoundException("TesterInData.txt do not exists"); - string[] InData = System.IO.File.ReadAllLines("TesterInData.txt"); - if (InData.Length < 1) - throw new IncorrectFileException("Can not load data from ProblemData.txt"); - int buf; - try - { - buf = Convert.ToInt32(InData[0]); + if (!File.Exists("TesterInData.txt")) + throw new FileNotFoundException("TesterInData.txt do not exists"); + string[] InData = System.IO.File.ReadAllLines("TesterInData.txt"); + if (InData.Length < 1) + throw new FileLoadException("Can not load data from ProblemData.txt"); + int buf; + try + { + buf = Convert.ToInt32(InData[0]); + } + catch (Exception e) + { + throw new FileLoadException("Can not load sleep time from TesterInData.txt " + e.Message); + } + + comp = new Compiler(CompPath, Source, TempPath, dat.CompilationTimeLimit, buf); } - catch (Exception e) - { - throw new IncorrectFileException("Can not load sleep time from TesterInData.txt " + e.Message); - } - - comp = new Compiler(CompPath, Source, TempPath, dat.CompilationTimeLimit, buf); + comp.Compile(); } - comp.Compile(); + catch (Exception e) + { + throw new TesterException("Exception in compiling!",e); + } } - public void RunAllTests() { RunAllTests(SecureType.Double,true); } - public void RunAllTests(SecureType SecType) { RunAllTests(SecType,true); } + public void RunAllTests() + { + RunAllTests(SecureType.Double,true); + } + public void RunAllTests(SecureType SecType) + { + RunAllTests(SecType,true); + } public void RunAllTests(SecureType SecType, bool TestAll) { - if (run == null) + try { - if (comp == null) - throw new TesterException("You should first compile source before running tests!"); - run = new Runner(SecType, ProblemPath, comp.ExeFile, TempPath, comp.CONST_SLEEP); + if (run == null) + { + if (comp == null) + throw new TesterException("You should first compile source before running tests!"); + run = new Runner(SecType, ProblemPath, comp.ExeFile, TempPath, comp.CONST_SLEEP); + } + run.TestAll = TestAll; + run.RunTests(); } - run.TestAll = TestAll; - run.RunTests(); + catch (Exception e) + { + throw new TesterException("Exception in running tests!",e); + } } - public void RunOneTest(int index) { RunOneTest(SecureType.Double,index); } + public void RunOneTest(int index) + { + RunOneTest(SecureType.Double,index); + } public void RunOneTest(SecureType SecType, int index) { - if (run == null) + try { - if (comp == null) - throw new TesterException("You should first compile source before running tests!"); - run = new Runner(SecType, ProblemPath, comp.ExeFile, TempPath, comp.CONST_SLEEP); + if (run == null) + { + if (comp == null) + throw new TesterException("You should first compile source before running tests!"); + run = new Runner(SecType, ProblemPath, comp.ExeFile, TempPath, comp.CONST_SLEEP); + } + run.ExecuteTest(index); } - run.ExecuteTest(index); + catch (Exception e) + { + throw new TesterException("Exception in running test",e); + } } public void StopTesting() Modified: ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp =================================================================== --- ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp 2008-09-20 22:01:36 UTC (rev 367) +++ ACMServer/trunk/sharp tester/SourceTest 2.0/Test/Test.cpp 2008-09-21 08:13:45 UTC (rev 368) @@ -10,13 +10,17 @@ { SetPriorityClass(GetCurrentProcess(),HIGH_PRIORITY_CLASS); //for better testing initlock(); + if (!File::Exists(ProblemPath + "ProblemData.txt")) + throw gcnew FileNotFoundException("ProblemData not found!"); data = gcnew DataLoader(ProblemPath + "ProblemData.txt"); - data->Load(); + if (!data->Load()) + throw gcnew FileLoadException("Can not load problem data!"); testfield=gcnew TestLoader(data->InputName,data->OutputName,data->PointFileName,data->TestFolderName,ProblemPath); testfield->Load(); results=gcnew array<TestRes^>(testfield->tests->Length); plug=gcnew PluginLoader(System::IO::Path::GetFullPath(data->CheckPlugin)); - plug->Load(); + if (!plug->Load()) + throw gcnew FileLoadException("Can not load Plugin!"); exe=ExeFile; prob=ProblemPath; temp=TempPath; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-20 22:01:56
|
Revision: 367 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=367&view=rev Author: brus07 Date: 2008-09-20 22:01:36 +0000 (Sat, 20 Sep 2008) Log Message: ----------- Rename "Checker" project to "Runner". In the future, necessary to rename to the best name. Modified Paths: -------------- ACMServer/trunk/ACMServer/ACMTester.sln ACMServer/trunk/ACMServer/Tester/Tester.csproj Added Paths: ----------- ACMServer/trunk/ACMServer/Runner/ ACMServer/trunk/ACMServer/Runner/Runner.csproj Removed Paths: ------------- ACMServer/trunk/ACMServer/Checker/ ACMServer/trunk/ACMServer/Runner/Checker.csproj Modified: ACMServer/trunk/ACMServer/ACMTester.sln =================================================================== --- ACMServer/trunk/ACMServer/ACMTester.sln 2008-09-20 22:01:05 UTC (rev 366) +++ ACMServer/trunk/ACMServer/ACMTester.sln 2008-09-20 22:01:36 UTC (rev 367) @@ -9,7 +9,7 @@ EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "LibraryExtention", "Library\LibraryExtention\LibraryExtention.csproj", "{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}" EndProject -Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Checker", "Checker\Checker.csproj", "{052D9F77-17AF-42F3-BFBF-975A19383496}" +Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Runner", "Runner\Runner.csproj", "{052D9F77-17AF-42F3-BFBF-975A19383496}" EndProject Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "Data", "Library\Data\Data.csproj", "{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}" EndProject Property changes on: ACMServer/trunk/ACMServer/Runner ___________________________________________________________________ Added: svn:ignore + bin obj Added: tsvn:logminsize + 5 Added: svn:mergeinfo + Deleted: ACMServer/trunk/ACMServer/Runner/Checker.csproj =================================================================== --- ACMServer/trunk/ACMServer/Checker/Checker.csproj 2008-09-19 21:53:02 UTC (rev 355) +++ ACMServer/trunk/ACMServer/Runner/Checker.csproj 2008-09-20 22:01:36 UTC (rev 367) @@ -1,70 +0,0 @@ -<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> - <PropertyGroup> - <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> - <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> - <ProductVersion>8.0.50727</ProductVersion> - <SchemaVersion>2.0</SchemaVersion> - <ProjectGuid>{052D9F77-17AF-42F3-BFBF-975A19383496}</ProjectGuid> - <OutputType>Library</OutputType> - <AppDesignerFolder>Properties</AppDesignerFolder> - <RootNamespace>Checker</RootNamespace> - <AssemblyName>Checker</AssemblyName> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> - <DebugSymbols>true</DebugSymbols> - <DebugType>full</DebugType> - <Optimize>false</Optimize> - <OutputPath>bin\Debug\</OutputPath> - <DefineConstants>DEBUG;TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> - <DebugType>pdbonly</DebugType> - <Optimize>true</Optimize> - <OutputPath>bin\Release\</OutputPath> - <DefineConstants>TRACE</DefineConstants> - <ErrorReport>prompt</ErrorReport> - <WarningLevel>4</WarningLevel> - </PropertyGroup> - <ItemGroup> - <Reference Include="SourceTest, Version=1.0.3077.22878, Culture=neutral, processorArchitecture=x86"> - <SpecificVersion>False</SpecificVersion> - <HintPath>.\SourceTest.dll</HintPath> - </Reference> - <Reference Include="System" /> - <Reference Include="System.Data" /> - <Reference Include="System.Xml" /> - </ItemGroup> - <ItemGroup> - <Compile Include="Class1.cs" /> - <Compile Include="Properties\AssemblyInfo.cs" /> - </ItemGroup> - <ItemGroup> - <Content Include="InData.txt"> - <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> - </Content> - </ItemGroup> - <ItemGroup> - <ProjectReference Include="..\Library\Data\Data.csproj"> - <Project>{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}</Project> - <Name>Data</Name> - </ProjectReference> - <ProjectReference Include="..\Library\LibraryExtention\LibraryExtention.csproj"> - <Project>{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}</Project> - <Name>LibraryExtention</Name> - </ProjectReference> - </ItemGroup> - <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> - <!-- To modify your build process, add your task inside one of the targets below and uncomment it. - Other similar extension points exist, see Microsoft.Common.targets. - <Target Name="BeforeBuild"> - </Target> - <Target Name="AfterBuild"> - </Target> - --> - <PropertyGroup> - <PostBuildEvent> - </PostBuildEvent> - </PropertyGroup> -</Project> \ No newline at end of file Copied: ACMServer/trunk/ACMServer/Runner/Runner.csproj (from rev 355, ACMServer/trunk/ACMServer/Checker/Checker.csproj) =================================================================== --- ACMServer/trunk/ACMServer/Runner/Runner.csproj (rev 0) +++ ACMServer/trunk/ACMServer/Runner/Runner.csproj 2008-09-20 22:01:36 UTC (rev 367) @@ -0,0 +1,70 @@ +<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003"> + <PropertyGroup> + <Configuration Condition=" '$(Configuration)' == '' ">Debug</Configuration> + <Platform Condition=" '$(Platform)' == '' ">AnyCPU</Platform> + <ProductVersion>8.0.50727</ProductVersion> + <SchemaVersion>2.0</SchemaVersion> + <ProjectGuid>{052D9F77-17AF-42F3-BFBF-975A19383496}</ProjectGuid> + <OutputType>Library</OutputType> + <AppDesignerFolder>Properties</AppDesignerFolder> + <RootNamespace>Runner</RootNamespace> + <AssemblyName>Runner</AssemblyName> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' "> + <DebugSymbols>true</DebugSymbols> + <DebugType>full</DebugType> + <Optimize>false</Optimize> + <OutputPath>bin\Debug\</OutputPath> + <DefineConstants>DEBUG;TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Release|AnyCPU' "> + <DebugType>pdbonly</DebugType> + <Optimize>true</Optimize> + <OutputPath>bin\Release\</OutputPath> + <DefineConstants>TRACE</DefineConstants> + <ErrorReport>prompt</ErrorReport> + <WarningLevel>4</WarningLevel> + </PropertyGroup> + <ItemGroup> + <Reference Include="SourceTest, Version=1.0.3077.22878, Culture=neutral, processorArchitecture=x86"> + <SpecificVersion>False</SpecificVersion> + <HintPath>.\SourceTest.dll</HintPath> + </Reference> + <Reference Include="System" /> + <Reference Include="System.Data" /> + <Reference Include="System.Xml" /> + </ItemGroup> + <ItemGroup> + <Compile Include="Class1.cs" /> + <Compile Include="Properties\AssemblyInfo.cs" /> + </ItemGroup> + <ItemGroup> + <Content Include="InData.txt"> + <CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory> + </Content> + </ItemGroup> + <ItemGroup> + <ProjectReference Include="..\Library\Data\Data.csproj"> + <Project>{30C0EFA3-36A8-4C6F-8FEC-28F771D4933F}</Project> + <Name>Data</Name> + </ProjectReference> + <ProjectReference Include="..\Library\LibraryExtention\LibraryExtention.csproj"> + <Project>{A8135069-F8BA-4E5D-835F-3FF3F350AA5D}</Project> + <Name>LibraryExtention</Name> + </ProjectReference> + </ItemGroup> + <Import Project="$(MSBuildBinPath)\Microsoft.CSharp.targets" /> + <!-- To modify your build process, add your task inside one of the targets below and uncomment it. + Other similar extension points exist, see Microsoft.Common.targets. + <Target Name="BeforeBuild"> + </Target> + <Target Name="AfterBuild"> + </Target> + --> + <PropertyGroup> + <PostBuildEvent> + </PostBuildEvent> + </PropertyGroup> +</Project> \ No newline at end of file Property changes on: ACMServer/trunk/ACMServer/Runner/Runner.csproj ___________________________________________________________________ Added: svn:mergeinfo + Modified: ACMServer/trunk/ACMServer/Tester/Tester.csproj =================================================================== --- ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-20 22:01:05 UTC (rev 366) +++ ACMServer/trunk/ACMServer/Tester/Tester.csproj 2008-09-20 22:01:36 UTC (rev 367) @@ -70,9 +70,9 @@ <Compile Include="Library\SocketClientGate.cs" /> </ItemGroup> <ItemGroup> - <ProjectReference Include="..\Checker\Checker.csproj"> + <ProjectReference Include="..\Runner\Runner.csproj"> <Project>{052D9F77-17AF-42F3-BFBF-975A19383496}</Project> - <Name>Checker</Name> + <Name>Runner</Name> </ProjectReference> <ProjectReference Include="..\Library\Connector\Connector.csproj"> <Project>{211DD6A5-2D73-439E-8722-ED2C89ED1DDB}</Project> This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <vl...@us...> - 2008-09-20 22:01:13
|
Revision: 366 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=366&view=rev Author: vladykx Date: 2008-09-20 22:01:05 +0000 (Sat, 20 Sep 2008) Log Message: ----------- UPDATED: - 1 line added to .csv lang files to stop notice from Zend_Translate_Adapter Modified Paths: -------------- website/lang/en.csv website/lang/uk.csv Modified: website/lang/en.csv =================================================================== --- website/lang/en.csv 2008-09-20 21:49:53 UTC (rev 365) +++ website/lang/en.csv 2008-09-20 22:01:05 UTC (rev 366) @@ -0,0 +1 @@ +english;english \ No newline at end of file Modified: website/lang/uk.csv =================================================================== --- website/lang/uk.csv 2008-09-20 21:49:53 UTC (rev 365) +++ website/lang/uk.csv 2008-09-20 22:01:05 UTC (rev 366) @@ -0,0 +1 @@ +english;\xC0\xED\xE3\xEB\xB3\xE9\xF1\xFC\xEA\xE0 \ No newline at end of file This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <br...@us...> - 2008-09-20 21:41:05
|
Revision: 364 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=364&view=rev Author: brus07 Date: 2008-09-20 21:40:46 +0000 (Sat, 20 Sep 2008) Log Message: ----------- Added new class for working with pool of works. Modified Paths: -------------- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj Added Paths: ----------- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-09-20 20:31:56 UTC (rev 363) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGate.cs 2008-09-20 21:40:46 UTC (rev 364) @@ -19,10 +19,13 @@ DataMediator dataContainer = new DataMediator(); + WorkingPool pool = new WorkingPool(); + private SocketServerGate() { base.Start(); base.onDataArrived += DataArrived; + pool.onSendData += base.Send; } public static SocketServerGate GetInstance() { @@ -39,56 +42,6 @@ } } - Dictionary<SystemMessage, object> poolWork = new Dictionary<SystemMessage, object>(); - bool poolWorking = false; - private void Send2(Submit submit) - { - if (dataContainer.Contains(submit) == false) - { - SystemMessage sysMes = new SystemMessage(submit.ToString(), "TestingSubmit"); - lock (poolWork) - { - poolWork.Add(sysMes, null); - } - startPool(); - } - } - private void runPool() - { - if (poolWorking == true) - return; - poolWorking = true; - while (true) - { - Thread.Sleep(100); - lock (poolWork) - { - if (poolWork.Count == 0) - break; - foreach (SystemMessage sysMes in poolWork.Keys) - { - if (base.Send(sysMes) == true) - { - poolWork.Remove(sysMes); - break; - } - } - } - } - poolWorking = false; - } - private static void RunningPool(Object ob) - { - SocketServerGate ssg = (SocketServerGate)ob; - ssg.runPool(); - } - private void startPool() - { - if (poolWorking == false) - { - ThreadPool.QueueUserWorkItem(RunningPool, this); - } - } private void GenerateLogMessageWirhIDs(SubmitList submitList) { @@ -112,7 +65,11 @@ for (int index = 0; index < submitList.Items.Length; index++) { - Send2(submitList.Items[index]); + if (dataContainer.Contains(submitList.Items[index]) == false) + { + SystemMessage sysMes = new SystemMessage(submitList.Items[index].ToString(), "TestingSubmit"); + pool.Send(sysMes); + } } return true; } Modified: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-09-20 20:31:56 UTC (rev 363) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/SocketServerGatePlugin.csproj 2008-09-20 21:40:46 UTC (rev 364) @@ -44,6 +44,7 @@ <Compile Include="SocketServerGatePluginUserControl.Designer.cs"> <DependentUpon>SocketServerGatePluginUserControl.cs</DependentUpon> </Compile> + <Compile Include="WorkingPool.cs" /> </ItemGroup> <ItemGroup> <ProjectReference Include="..\..\..\Library\Connector\Connector.csproj"> Added: ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs =================================================================== --- ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs (rev 0) +++ ACMServer/trunk/ACMServer/Plugins/MediatorPlugins/SocketServerGatePlugin/WorkingPool.cs 2008-09-20 21:40:46 UTC (rev 364) @@ -0,0 +1,70 @@ +using System; +using AcmContester.Library.LibraryExtention; +using System.Collections.Generic; +using System.Threading; + +namespace AcmContester.Plugins.MediatorPlugins.SocketServerGatePlugin +{ + class WorkingPool + { + internal delegate bool SebdDataDelegate(SystemMessage s); + internal event SebdDataDelegate onSendData; + + + Dictionary<SystemMessage, object> poolWork = new Dictionary<SystemMessage, object>(); + bool poolWorking = false; + + private bool OnSendData(SystemMessage sysMes) + { + if (onSendData != null) + return onSendData(sysMes); + return false; + } + + private void runPool() + { + if (poolWorking == true) + return; + poolWorking = true; + while (true) + { + Thread.Sleep(100); + lock (poolWork) + { + if (poolWork.Count == 0) + break; + foreach (SystemMessage sysMes in poolWork.Keys) + { + if (OnSendData(sysMes) == true) + { + poolWork.Remove(sysMes); + break; + } + } + } + } + poolWorking = false; + } + private static void RunningPool(Object ob) + { + WorkingPool ssg = (WorkingPool)ob; + ssg.runPool(); + } + private void startPool() + { + if (poolWorking == false) + { + ThreadPool.QueueUserWorkItem(RunningPool, this); + } + } + + internal void Send(SystemMessage sysMes) + { + lock (poolWork) + { + poolWork.Add(sysMes, null); + } + startPool(); + } + } +} This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <pan...@us...> - 2008-09-20 20:01:20
|
Revision: 362 http://acmcontester.svn.sourceforge.net/acmcontester/?rev=362&view=rev Author: panzaboi Date: 2008-09-20 20:01:14 +0000 (Sat, 20 Sep 2008) Log Message: ----------- Added file to keep updated database structure. Added Paths: ----------- website/other/ website/other/db.sql Added: website/other/db.sql =================================================================== --- website/other/db.sql (rev 0) +++ website/other/db.sql 2008-09-20 20:01:14 UTC (rev 362) @@ -0,0 +1,1550 @@ +-- phpMyAdmin SQL Dump +-- version 2.11.7 +-- http://www.phpmyadmin.net +-- +-- Host: localhost +-- Generation Time: Sep 20, 2008 at 10:52 PM +-- Server version: 5.0.51 +-- PHP Version: 5.2.6 + +SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO"; + +-- +-- Database: `acm` +-- + +-- -------------------------------------------------------- + +-- +-- Table structure for table `archieve_submits` +-- + +CREATE TABLE IF NOT EXISTS `archieve_submits` ( + `id` int(11) NOT NULL, + `username` varchar(50) NOT NULL, + `challengeid` int(11) NOT NULL, + `languageid` int(11) NOT NULL, + `state` int(11) NOT NULL, + `tests` int(11) NOT NULL, + `firsttest` tinyint(1) NOT NULL default '0', + `runtime` double NOT NULL, + `memory` int(11) NOT NULL, + `when` int(11) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8; + +-- +-- Dumping data for table `archieve_submits` +-- + + +-- -------------------------------------------------------- + +-- +-- Table structure for table `challenges` +-- + +CREATE TABLE IF NOT EXISTS `challenges` ( + `id` int(11) NOT NULL auto_increment, + `name` varchar(200) NOT NULL, + `description` text NOT NULL, + `timelimit` double NOT NULL default '0', + `memorylimit` int(11) NOT NULL default '0', + `outputlimit` int(11) NOT NULL default '0', + `tries` int(11) NOT NULL default '0', + `accepted` int(11) NOT NULL default '0', + `author` varchar(50) character set latin1 NOT NULL, + `enabled` tinyint(1) NOT NULL default '1', + PRIMARY KEY (`id`) +) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1195 ; + +-- +-- Dumping data for table `challenges` +-- + +INSERT INTO `challenges` (`id`, `name`, `description`, `timelimit`, `memorylimit`, `outputlimit`, `tries`, `accepted`, `author`, `enabled`) VALUES +(1000, 'Swap', '<P align=left><B>Завдання</B></P><P>Дано два цілих числа a та b. Написати програму, яка б міняла їхні значення місцями. Тобто після виконання програми замість а значення b, а замість b - а. <P><B>Вхідні дані</B></P><P>В єдиному рядку записано два числа - а та b. (-32000 < a, b < 32000). <P><B>Вихідні дані</B></P><P>Вивести в єдиний рядок через пропуск два числа: спочатку b, а потім a. <P><B>Приклад введення 1</B></P><P><PRE>1 2</PRE><P><B>Приклад виведення 1</B></P><P><PRE>2 1</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>2 3</PRE><P><B>Приклад виведення 2</B></P><P><PRE>3 2</PRE><BR>', 1000, 5120000, 204800, 0, 0, '', 1), +(1001, 'A in power k', '<P align=left><B>Завдання</B></P><P>Для заданого цілого а та натурального k обчислити a<SUP>k</SUP>.<P><B>Вхідні дані</B></P><P>В єдиному рядку записано два числа a та k (-32000 < a <= 32000, 0 < k < 32000).<P><B>Вихідні дані</B></P><P>Єдине число - відповідь. Гарантується, що відповідь не більша за 2*10<SUP>9</SUP>.<P><B>Приклад введення 1</B></P><P><PRE>1 1</PRE><P><B>Приклад виведення 1</B></P><P><PRE>1</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>2 3</PRE><P><B>Приклад виведення 2</B></P><P><PRE>8</PRE><BR>', 1000, 5120000, 204800, 0, 0, '', 1), +(1002, 'Послідовність Фібоначчі', '<P align=left><B>Завдання</B></P><P>Послідовність фібоначчі визначається наступним чином:<BR></P><UL><LI>a<SUB>0</SUB>=0;<LI>a<SUB>1</SUB>=1;<LI>a<SUB>k</SUB>=a<SUB>k-1</SUB> + a<SUB>k-2</SUB></LI></UL><BR><BR>Для заданого n знайти значення n-го елемента послідовності Фібоначчі (a<SUB>n</SUB>).<P><B>Вхідні дані</B></P><P>В єдиному рядку записане єдине число N (1 <= N <= 40).<P><B>Вихідні дані</B></P><P>Єдине число - відповідь.<P><B>Приклад введення 1</B></P><P><PRE>1</PRE><P><B>Приклад виведення 1</B></P><P><PRE>1</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>5</PRE><P><B>Приклад виведення 2</B></P><P><PRE>5</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>8</PRE><P><B>Приклад виведення 3</B></P><P><PRE>21</PRE><BR>', 1000, 5120000, 204800, 0, 0, '', 1), +(1003, 'Рукавички', '<P align=left><B>Завдання</B></P><P>Комірник видає по К рукавичок кожному робітнику. Тобто другий робітник отримає рукавички від (K+1)-шої до (2∙K)-ї включно, рукавички номер (2∙K+2) отримає третій робітник і для нього вони будуть другими.<P>Напишіть програму, яка за номером виданих рукавичок визначає номер робітника, якому їх видано та порядковий номер цих рукавичок в цього робітника<P><B>Вхідні дані</B></P><P>В єдиному рядку записано два числа - K та N. K - кількість рукавичок кожному робітнику, N - номер пари рукавичок (1 <= K <= 200, 1 <= N <= 20000) розділені пропуском.<P><B>Вихідні дані</B></P><P>Номер робітника та номер рукавичок в цього робітника, розділені пропуском.<P><B>Приклад введення 1</B></P><P><PRE>50 1</PRE><P><B>Приклад виведення 1</B></P><P><PRE>1 1</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>20 25</PRE><P><B>Приклад виведення 2</B></P><P><PRE>2 5</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>15 43</PRE><P><B>Приклад виведення 3</B></P><P><PRE>3 13</PRE><BR>', 1000, 5120000, 204800, 0, 0, '', 1), +(1004, 'Супер проста проблема', '<P align=left><B>Завдання</B></P><P>Знайти квадрат N-го простого числа.<P><B>Вхідні дані</B></P><P>В єдиному рядку записане єдине число N (1 <= N <= 100).<P><B>Вихідні дані</B></P><P>Єдине число - квадрат N-го простого числа<P><B>Приклад введення 1</B></P><P><PRE>1</PRE><P><B>Приклад виведення 1</B></P><P><PRE>4</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>2</PRE><P><B>Приклад виведення 2</B></P><P><PRE>9</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>5</PRE><P><B>Приклад виведення 3</B></P><P><PRE>121</PRE><BR>', 1000, 3072000, 204800, 0, 0, '', 1), +(1005, '0-1 проблема', '<P align=left><B>Завдання</B></P><P>Над рядочком 01 виконаємо наступні операції:<UL><LI>Скопіюємо в кінець рядочка самого себе (отримаємо 0101)<LI>В другій половині рядка всі 0 змінимо на 1, а всі 1 на 0 (отримаємо 0110)</LI></UL>Над рядочком 0110 виконаємо ті самі операції. Отримаємо 01101001. І т. д.Таким чином отримаємо нескінченний рядочок нулів та одиниць.Ваше завдання – знайти n-тий символ такого рядочка.<P><B>Вхідні дані</B></P><P>В єдиному рядку записане єдине число N (1 <= N <= 2000000000).<P><B>Вихідні дані</B></P><P>Єдиний символ, який буде на N-й позиції.<P><B>Приклад введення 1</B></P><P><PRE>1</PRE><P><B>Приклад виведення 1</B></P><P><PRE>0</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>2</PRE><P><B>Приклад виведення 2</B></P><P><PRE>1</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>5</PRE><P><B>Приклад виведення 3</B></P><P><PRE>1</PRE><BR>', 1000, 3072000, 2048, 0, 0, '', 1), +(1006, 'Одинадцять', '<P align=left><B>Завдання</B></P><P>Ваше завдання – визначити чи ділиться дане число на 11.<P><B>Вхідні дані</B></P><P>В єдиному рядку записане єдине число N (1 <= n). Число має не більше тисячі знаків.<P><B>Вихідні дані</B></P><P>Вам потрібно вивести “Yes” – якщо число ділиться на 11, і “No” – в протилежному випадку.<P><B>Приклад введення 1</B></P><P><PRE>323455693</PRE><P><B>Приклад виведення 1</B></P><P><PRE>Yes</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>5038297</PRE><P><B>Приклад виведення 2</B></P><P><PRE>Yes</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>112234</PRE><P><B>Приклад виведення 3</B></P><P><PRE>No</PRE><BR>', 1000, 3072000, 2048, 0, 0, '', 1), +(1007, 'Супер послідовність', '<P align=left><B>Завдання</B></P><P>Послідовність чисел a1, a2, … an називається супер послідовністю, якщо виконуються наступні умови:<UL><LI>0 < a1 < a2 < … < an<LI>жодне з чисел не є сумою двох або більше інших чисел</LI></UL><P><B>Вхідні дані</B></P><P>В єдиному рядку записане число N (1 <= n <= 50), далі задано N чисел, кожне з яких не менше 1 і не більше 1000.<P><B>Вихідні дані</B></P><P>Вам необхідно вивести “Yes” – якщо дано супер послідовність, “No” – в протилежному випадку.<P><B>Приклад введення 1</B></P><P><PRE>2 1 2</PRE><P><B>Приклад виведення 1</B></P><P><PRE>Yes</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>3 1 2 3</PRE><P><B>Приклад виведення 2</B></P><P><PRE>No</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>10 1 3 16 19 25 70 100 243 245 306</PRE><P><B>Приклад виведення 3</B></P><P><PRE>No</PRE><BR>', 1000, 3072000, 2048, 0, 0, '', 1), +(1008, 'Супер яйця', '<P align=left><B>Задання</B></P><P>Нехай у вас є n супер яєць і ви живете в k поверховому будинку. Вам необхідно визначити за найменшу кількість кидків найбільший номер поверху з якого кинуте вниз супер яйце не розбивається. Тобто, за яку найменшу кількість спроб можна визначити найвищий поверх, з якого супер яйце не розбивається. Зауважте, якщо в результаті деякої спроби яйце не розбилось, то воно може бути використане в наступних спробах.<P><B>Вхідні дані</B></P><P>В єдиному рядку записано 2 цілих числа N (N<=30)- кількість яєць та M (M<=2 000 000 000)- кількість поверхів.<P><B>Вихідні дані</B></P><P>У єдиному рядку треба вивести єдине число – мінімальна необхідна кількість спроб. Якщо необхідно більше 30 спроб виведіть -1.<P><B>Приклад введення 1</B></P><P><PRE>1 15</PRE><P><B>Приклад виведення 1</B></P><P><PRE>15</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>2 100</PRE><P><B>Приклад виведення 2</B></P><P><PRE>14</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>10 786599</PRE><P><B>Приклад виведення 3</B></P><P><PRE>21</PRE><BR><P><B>Приклад введення 4</B></P><P><PRE>4 786599</PRE><P><B>Приклад виведення 3</B></P><P><PRE>-1</PRE><BR>', 1000, 5120000, 2048, 0, 0, '', 1), +(1009, 'Супер карти', '<P align=left><B>Завдання</B></P><P>Дана колода впорядкованих супер карт від 1 до n. Верхня супер карта має номер 1, нижня – n. Поки в колоді є хоча б дві супер карти викидаємо верхню карту, а наступну ставимо вниз колоди.<P>Необхідно знайти номер супер карти, що залишиться.<P><B>Вхідні дані</B></P><P>В єдиному рядку записане єдине число N - число супер карт в колоді (1 <= n <= 1000000).<P><B>Вихідні дані</B></P><P>Єдине число - номер супер карти, що залишиться.<P><B>Приклад введення 1</B></P><P><PRE>7</PRE><P><B>Приклад виведення 1</B></P><P><PRE>6</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>19</PRE><P><B>Приклад виведення 2</B></P><P><PRE>6</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>10</PRE><P><B>Приклад виведення 3</B></P><P><PRE>4</PRE><BR><P><B>Приклад введення 4</B></P><P><PRE>6</PRE><P><B>Приклад виведення 4</B></P><P><PRE>4</PRE><BR>', 1000, 3072000, 2048, 0, 0, '', 1), +(1010, 'Остання проблема', '<P align=left><B>Завдання</B></P><P>Ваше завдання – визначити чи дане число N можна представити у вигляді суми двох простих чисел.<P><B>Вхідні дані</B></P><P>В єдиному рядку записане єдине число N (1 <= N <= 1000000).<P><B>Вихідні дані</B></P><P>Cума двох простих чисел, що рівна n, або -1, якщо такої не існує. В сумі перше число не більше другого і якщо існує декілька таких можливих сум – вивести ту, в якої перший доданок найменший.<P><B>Приклад введення 1</B></P><P><PRE>9</PRE><P><B>Приклад виведення 1</B></P><P><PRE>2+7</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>10</PRE><P><B>Приклад виведення 2</B></P><P><PRE>3+7</PRE><BR><P><B>Приклад введення 3</B></P><P><PRE>11</PRE><P><B>Приклад виведення 3</B></P><P><PRE>-1</PRE><BR>', 1000, 3072000, 2048, 0, 0, '', 1), +(1011, 'Медіанний фільтр', '<P align=left><B>Завдання</B></P><P>Медіаною у відсортованому по неспаданню масиву розмірності N називається елемент, який знаходиться у середній позиції масиву, тобто у позиції (N+1)/2 (цілочисельне ділення). <P>Медіанним фільтром для растрового зображення називається таке перетворення кожної точки, колір якої вибирається як медіана із множини точок з певного околу (радіусом R) цієї точки (квадратної області із центром у вибраній точці – розміри квадрата рівні [R+1+ R]×[ R+1+R]). Медіанний фільтр використовують для видалення дрібного шуму із зображення. На межі зображення точки, що виходять за межі, вважаються точками із кольором фону (абсолютне значення рівне нулю).<P>Для заданого малюнку прямокутної форми шириною W та висотою H знайдіть максимальне значення медіани для розміру околу R. Вважається, що малюнок монохромний із 256 градаціями одного кольору.<P><B>Вхідні дані</B></P><P>В першому рядку задані 3 числа: розмір околу R (1≤R≤20), H(1≤H≤400), W(1≤W≤250). В наступних H рядках знаходиться по W чисел розділених пропуском. Числа – це кольори відповідних точок.<P><B>Вихідні дані</B></P><P>Виведіть результат – максимальне значення медіани для заданого малюнку та радіусу.<P><B>Приклад введення</B></P><P><PRE>1 4 3</PRE><PRE>1 1 1</PRE><PRE>1 2 4</PRE><PRE>2 3 2</PRE><PRE>1 1 1</PRE><P><B>Приклад виведення</B></P><P><PRE>2</PRE>', 1500, 3072000, 204800, 0, 0, '', 1), +(1012, 'Дужки і Нобелівська премія', '<P align=left><B>Завдання</B></P><P>Директор однієї відомої програмістської фірми Білл (ви напевно його знаєте) захотів одержати Нобелівську премію. Для цього він запропонував додати в арифметичні вирази крім круглих дужок ще й квадратні, причому: спочатку виконуються обчислення в квадратних дужках, що стоять лівіше, потім в наступних квадратних і т.д.; в такому ж порядку виконуються обчислення в круглих дужках. Наприклад: у виразі порядок обчислення виразів в дужках такий: <CENTER><IMG src="/fusion/images/problems/1012/pic1.jpg"></CENTER><P>Працівники фірми встигнуть в запланований термін реалізувати тільки виконання всіх потрібних операцій в виразах без дужок. Тому пан Білл звернувся до нас за допомогою. Отже, ваше завдання таке: <BR>1) виведіть на екран "YES", якщо дужки у виразі розставлені правильно і "NO" в протилежному випадку;<BR>2) у випадку правильно розставлених дужок виведіть на екран через пропуск в окремому рядку для кожної пари дужок позиції їх розташування в заданому виразі, якщо він буде обчислюватися згідно описаних вище правил. <P><B>Вхідні дані</B></P><P>В першому рядку знаходиться вираз. Довжина рядка не перевищує 255 символів. <P><B>Вихідні дані</B></P><P>Результат виконання програми. <P><B>Приклад введення</B></P><P><PRE>а+(2-с)-[21-8*b+(-2)]+[3]</PRE><P><B>Приклад виведення</B></P><P><PRE>YES</PRE><PRE>17 20</PRE><PRE>9 21</PRE><PRE>23 25</PRE><PRE>3 7<BR></PRE>', 500, 3072000, 2048, 0, 0, '', 1), +(1013, 'Електронний пристрій', '<P align=left><B>Завдання</B></P><P>Одному визначному вченому майже вдалося побудувати новий електронний пристрій визначення поведінки погоди. Йому потрібна програма, яка б дозволяла аналізувати вміст результатів дослідження. Ваше завдання – допомогти йому. <P>Результати – це послідовність чисел (нуль або один). Вам потрібно дати відповідь чи всі числа рівні між і-тим та j-тим елементами послідовності включно. <P><B>Вхідні дані</B></P><P>В першому рядку задано число N(0 < N ≤ 3*10<SUP>5</SUP>) – кількість елементів послідовності. В другому рядку розділені пропуском записані елементи послідовності. В третьому рядку записано число M(0 < M ≤ 5*10<SUP>4</SUP>) – кількість запитань. Далі в M рядках розділені пропуском записані позиції і та j. <P><B>Вихідні дані</B></P><P>Потрібно вивести M чисел по одному в рядку. 1 в разі ствердної відповіді на запитання і 0 в протилежному випадку. <P><B>Приклад введення</B></P><P><PRE>10</PRE><PRE>1 0 0 1 0 0 0 1 1 1</PRE><PRE>4</PRE><PRE>1 3</PRE><PRE>2 3</PRE><PRE>8 10</PRE><PRE>5 8</PRE><P><B>Приклад виведення</B></P><P><PRE>0</PRE><PRE>1</PRE><PRE>1</PRE><PRE>0</PRE><BR>', 500, 3072000, 204800, 0, 0, '', 1), +(1014, 'Гра', '<P align=left><B>Завдання</B></P><P>Поле гри складається з N зрозміщених вряд одна за одною клітинок. На початку гри в першій і N-тій клітинці знаходяться дві фішки. Кожен з двох гравців може переміщувати свою фішку на не більше ніж K позицій вправо чи вліво. Забороняється залишатися на місці і перескакувати фішку суперника. Програє той, хто не може зробити хід. Напишіть програму, яка повідомить хто виграє, якщо кожен з гравців буде намагатись використовувати виграшну стратегію.<P><B>Вхідні дані</B></P><P>В єдиному рядку записано N(1 < N ≤ 500) та K(0 < K ≤ 50), які розділені пропуском.<P><B>Вихідні дані</B></P><P>Виведіть „1”, якщо переможе перший гравець та „2” в протилежному випадку.<P><B>Приклад введення</B></P><P><PRE>5 2</PRE><P><B>Приклад виведення</B></P><P><PRE>2</PRE><BR>', 500, 3072000, 2048, 0, 0, '', 1), +(1015, 'Числа Фібоначчі', '<P align=left><B>Завдання</B></P><P>Числа Фібоначчі визначаються рекурентною формулою:<BR></P><CENTER>f<SUB>0</SUB> = 0; f<SUB>1</SUB> = 1; f<SUB>n</SUB> = f<SUB>n-1</SUB> + f<SUB>n-2</SUB>;</CENTER><BR><P>Початок послідовності має вигляд 0, 1, 1, 2, 3, 5, 8, 13, 21, 34, ... . <P><B>Вхідні дані</B></P><P>В єдиному рядку знаходиться число N (0 ≤ N ≤ 10000).<P><B>Вихідні дані</B></P><P>Виведіть N-те число Фібоначчі.<P><B>Приклад введення</B></P><P><PRE>7</PRE><P><B>Приклад виведення</B></P><P><PRE>13</PRE><BR>', 500, 3072000, 204800, 0, 0, '', 1), +(1016, 'Скарб', '<P align=left><B>Завдання</B></P><P>Знайти закопаний піратами скарб дуже легко. Все що для цього необхідно - карта. Як відомо, пірати малюють карти від руки і описують алгоритм знаходження потрібного місця наступним чином: "Станьте біля одинокої пальми, пройдіть 30 кроків в сторону лісу, 15 в сторону озера, ..." <P>Вважається, що карта задана як послідовність переміщень по заданому напрямку (1 - північ, 2 - північний схід, 3 - схід, 4 - південний схід, 5 - південь, 6 - південний захід, 7 - захід, 8 - північний захід) в кроках (довжина кроку рівна 1) від початкової точки з координатами (0, 0).<P>Подорож по такому маршруту, зазвичай, є прекрасною можливістю оглянути місцевість, але в наш час ні в кого на це часу немає. Тому скарбошукачі попросили Вас написати програму, яка по заданій карті буде обчислювати місцезнаходження скарбу.<P><B>Вхідні дані</B></P><P>В першому рядку записане ціле число N - кількість переміщень (1 <= N <= 40). Наступні N рядків містять напрям (цифра від 1 до 8) та кількість кроків, які необхідно пройти у вказаному напрямку (ціле число від 1 до 1000). <P><B>Вихідні дані</B></P><P>В єдиному рядку записано два дійсні числа - координа X та Y місця, де закопаний скарб. Координати необхідно виводити через пропуск з 3-ма знаками після коми.<P><B>Приклад введення 1</B></P><P><PRE>6</PRE><PRE>1 3</PRE><PRE>3 1</PRE><PRE>1 1</PRE><PRE>3 3</PRE><PRE>5 2</PRE><PRE>7 1</PRE><P><B>Приклад виведення 1</B></P><P><PRE>3.000 2.000</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>1</PRE><PRE>8 10</PRE><P><B>Приклад виведення 2</B></P><P><PRE>-7.071 7.071</PRE><BR>', 1000, 3072000, 204800, 0, 0, '', 1), +(1017, 'Ланцюг', '<P align=left>Є N шматків ланцюга, кожен i-й з яких містить Li ланок. Можна розгинати довільні ланки та потім згинати їх знову, з’єднуючи окремі шматки.</P><P><B>Завдання</B></P><P>Напишіть програму, що за кількістю шматків ланцюга N та кількістю ланок у шматках Li визначає мінімальну кількість ланок, яку потрібно розігнути та зігнути знову, щоб з’єднати усі шматки в один ланцюг. Ланцюг не може мати розгалужень, тобто кожна його ланка повинна бути з’єднана з двома іншими ланками (крім двох ланок з країв ланцюга, що повинні бути з’єднані лише з однією ланкою).<P><B>Вхідні дані</B></P><P>В першому рядку знаходиться ціле число N (2 <= N <= 10 000). В другому рядку знаходяться N цілих чисел Li (1 <= Li <= 1 000 000 000), розділених пропуском. <P><B>Вихідні дані</B></P><P>В єдиному рядку повинно знаходитися ціле число — найменша кількість ланок, яку потрібно розігнути та зігнути знову, щоб отримати один ланцюг з усіх шматків.<P><B>Приклад введення</B></P><P><PRE>3</PRE><PRE>100 3 4</PRE><P><B>Приклад виведення</B></P><P><PRE>2</PRE><BR>', 500, 3072000, 204800, 0, 0, '', 1), +(1018, 'Ксорленд', '<P align=left><B>Завдання</B></P><P>В Національному університеті Ксорленду, названого на честь великого ученого Ксора, розробили нову криптосистему, яка, на їхню думку, повинна забезпечити найнадійніший захист електронних документів. У системі, ключі передаються відкрито. Щоб ключ не потрапив до рук сторонніх людей, разом з ключем передавали дуже багато інших псевдоключів. Перехопивши повідомлення, сторонні не могли визначити дійсний ключ. Перебирати всі ключі також не можливо, оскільки їх дуже багато. Ключ, та псевдоключі, є цілими невідємними 32-бітними числами.<P>На офіційній презентації криптосистеми розказали про те, як при отриманні повідомлення знаходиться ключ: кількість псевдоключів - парна кількість, і кожному псевдоключеві відповідає ще один такий самий псевдоключ. Справжньому ключеві пари немає. Отже загальна кількість ключів, які передаються разом із повідомленням, непарна. <P>Учені стверджують, що відшукання ключа серед псевдоключів вимагає декілька років і тому система надійна. Залишилась єдина незрозуміла річ: яким чином отримувач повідомлення знаходить ключ. <P>Ваше завдання: напишіть програму яка зможе відшукати дійсний ключ серед великої кількості псевдоключів.<P><B>Вхідні дані</B></P><P>В першому рядку задано N - кількість чисел (2 <= N <=3*10<SUP>10</SUP>). В кожному з наступних n рядків записано по одному ключу.<P><B>Вихідні дані</B></P><P>В єдиному рядку записане єдине число - потрібний ключ.<P><B>Приклад введення 1</B></P><P><PRE>5</PRE><PRE>1</PRE><PRE>3</PRE><PRE>2</PRE><PRE>1</PRE><PRE>2</PRE><P><B>Приклад виведення 1</B></P><P><PRE>3</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>5</PRE><PRE>1</PRE><PRE>1</PRE><PRE>1</PRE><PRE>1</PRE><PRE>1</PRE><P><B>Приклад виведення 2</B></P><P><PRE>1</PRE>', 20000, 3072000, 2048, 0, 0, '', 1), +(1019, 'Поле чудес', '<P><B>Завдання</B></P><P>Для гри у поле чудес використовується поділений на сектори круглий барабан і стрілка. На кожному секторі написане якесь число. У різних секторах можуть бути записані однакові числа. <P>Одного разу ведучий вирішив змінити правила гри. Він сам обертав барабан і називав числа, які проходили під стрілкою. Гравець не бачив барабан. Вийшло так, що барабан зробив цілу кількість обертів, тобто стрілка вказувала на той самий сектор, що й до обертання. <P>Після цього ведучий поставив запитання: яка найменша кількість секторів може бути на барабані? <P>Ваше завдання: напишіть програму, яка буде відповідати на це запитання <P><B>Вхідні дані</B></P><P>В першому рядку задано N - кількість чисел (2 <= N <= 30000), продиктованих ведучим. В наступному рядку, через пропуск записано a1, ..., an - числа, записані у тому порядку, у якому диктував ведучий (0 <= ai <= 32000). <P><B>Вихідні дані</B></P><P>В єдиному рядку записане єдине число - відповідь. <P><B>Приклад введення 1</B></P><P><PRE>13<BR>5 3 1 3 5 2 5 3 1 3 5 2 5</PRE><P><B>Приклад виведення 1</B></P><P><PRE>6</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>4<BR>1 1 1 1</PRE><P><B>Приклад виведення 2</B></P><P><PRE>1</PRE><BR>', 1000, 3072000, 2048, 0, 0, '', 1), +(1020, 'Армія', '<P align=left><B>Завдання</B></P><P>Одного семестру деякі студенти не здали сесію. Деякі не змогли здати історію, деякі програмування, а хтось – фізику…<P>Лейтенант наказав всім призовникам стати в одну шеренгу, а потім вирішив посортувати їх за незданим предметом. Спочатку повинні були іти «історики»(1), потім «програмісти»(2), а далі «фізики»(3). Лейтенант, за один крок, може поміняти місцями довільних двох студентів.<P>Порахувати мінімальну кількість кроків необхідних для такого сортування.<P><B>Вхідні дані</B></P>Число призовників N (1<=N<=1000) та перераховані типи призовників в шерензі («історики» - 1, «програмісти» - 2, «фізики» - 3)<P><B>Вихідні дані</B></P>Мінімальна кількість кроків для такого сортування.<P><B>Приклад введення</B></P><P><PRE>9</PRE><PRE>2</PRE><PRE>2</PRE><PRE>1</PRE><PRE>3</PRE><PRE>3</PRE><PRE>3</PRE><PRE>2</PRE><PRE>3</PRE><PRE>1</PRE><P><B>Приклад виведення</B></P><P><PRE>4</PRE><BR>', 500, 3072000, 2048, 0, 0, '', 1), +(1021, 'Книги', '<P align=left><B>Завдання</B></P><P>Книжки можна використовувати по різному. Можна, наприклад, поставивши їх на купу, зсунути одну відносно одної, поміряти наскільки далеко вони звисають за межею столу. Найвища книжка є першою, всі книжки однакові. <P>Першу книжку можна зсунути менше ніж на 0.5 її довжини, другу можна зсунути відносно столу або наступної книжки менше ніж на 1/3 її довжини. Сумарно вони будуть звисати над краєм столу менше ніж на 1/2 + 1/3. Третю книжку можна зсунути до 1/4, з номером n до 1/(n + 1).<P>За заданою схемою 5 книжок можна зсунути на віддаль до 1.45<P>Визначити мінімальну кількість книжок в купі за довжиною звисання.<P><B>Вхідні дані</B></P><P>Одне дійсне число від 0.01 до 5.20, точно 3 цифри.<P><B>Вихідні дані</B></P><P>Кількість книжок.<P><B>Приклад введення 1</B></P><P><PRE>1.00</PRE><P><B>Приклад виведення 1</B></P><P><PRE>3</PRE><BR><P><B>Приклад введення 2</B></P><P><PRE>1.45</PRE><P><B>Приклад виведення 2</B></P><P><PRE>6</PRE><BR>', 500, 3072000, 2048, 0, 0, '', 1), +(1022, 'Космозаправки', '<P align=left><B>Завдання</B></P><P>Із далекої планети до ще дальшої летить зореліт. Йому потрібно зробити заправку спеціального палива, яке є лише на заправочних станціях з номерами від 0 до нескінченості включно. Всі заправки розташовані на прямій лінії послідовно, відстань між ними дорівнює одному світловому року.</P><P>Нажаль існують фальшиві заправки, що заливають бракований бензин і навіть погіршують його у заправках, що знаходяться на відстані до K світлових років включно (покищо вчені галактики не можуть пояснити це явище).</P><P>Попередники розказали пілотам вашого зорельоту одну цікаву особливість цих заправок: фальшиві заправки мають такі номери, що діляться лише на самого себе і на один (мають рівно 2 різних дільники!).</P><P>Ваш зореліт летить від заправки А до заправки В.</P><P>Потрібно сказати скільки є заправок між А та В включно, на яких можна заправитися якісним (НЕ бракованим) бензином.</P><P><B>Вхідні дані</B></P><P>Дано три числа A, B, K.</P><P>1<=A<=B<=1000000</P><P>0<=K<=1000000</P><P><B>Вихідні дані</B></P><P>Єдине число, кількість заправок на яких можна заправитися.</P><P><B>Приклад введення 1</B></P><PRE>10 21</PRE><PRE>1</PRE><P><B>Приклад виведення 1</B></P><P><PRE>2</PRE><BR><P><B>Приклад введення 2</B></P><PRE>13 19</PRE><PRE>0</PRE><P><B>Приклад виведення 1</B></P><P><PRE>4</PRE><P></P><P><B>Автори задачі:</B><I> Бабіля Руслан, Коркуна Остап</I></P>', 1000, 5120000, 2048, 0, 0, '', 1), +(1023, 'ГігаЛотерея', '<P align=left><B>Завдання</B></P><P>2077 рік. "Найспекотніша" планета Сонячної системи Меркурій стає центром казино та азартних ігор нашої та сусідніх галактик. Особливої популярністі в земної та інших рас набула гра під назвою ГігаЛотерея. Головним призом є 2 гігабайти віртуальних грошей.</P><P>Правила лотереї такі: кожен учасник отримує номер, що відповідає його порядковому номеру реєстрації. Наприклад якщо в ГігаЛотереї зареєструвалось 7 осіб, то їх номери 1, 2, 3, 4, 5, 6, 7. Далі Суперкомп''ютер ГігаЛотереї вибирає випадкове число М і як у лічилці починає викидати кожного М-того учасника, поки не залишиться один - переможець. Якщо М=3, то у нашому прикладі послідовність викинутих учасників буде така: 3, 6, 2, 7, 5, 1. Переможцем стане учасник з номером 4.</P><P>Відомого авантюриста Остапа Бендера-молодшого не оминула жага легкої наживи. Він зареєструвався на олімпіаді під номером К. Але після цього зрозумів, що для стовідсооткового виграшу цього недостатньо. Всі знають, що Остап Бендер-молодший є відомим хакером з поганою славою, це йому передалось від його далекого родича, Остапа Бендера, який жив на початку ХХ століття в Одесі і був першим в світі хакером; він був хакером ще тоді, коли не було комп''ютерів!!!</P><P>Остап Бендер-молодший "взламав" сервер ГігаЛотереї і взнав кількість зареєстрованих учасників - N. Тепер йому треба встановити число М так, щоб переможцем став саме він. Ваше завдання знайти таке М.</P><P><B>Вхідні дані</B></P><P>Два цілі числа N і К (1 <= K <= N <= 1000).</P><P><B>Вихідні дані</B></P><P>Єдине додатнє число М (M <= N). Якщо є кілька можливих відповідей, вивести найменшу з них. Якщо неможливо знайти таке М, виведіть "-1" (без лапок).</P><P><B>Приклад введення</B></P><P>7 4</P><P><B>Приклад виведення</B></P><P>3</P><P><B>Автори задачі:</B><I> Бабіля Руслан, Коркуна Остап</I></P>', 1000, 3072000, 2048, 0, 0, '', 1), +(1024, 'Марсостриб', '<P align=left><B>Завдання</B></P><P>2077 рік. Наука далеко пішла вперед в галузі дослідження космосу. Вже не стоїть завдання долетіти до певної планети, щоб дослідити її. Люди освоюють найближчі планети, зокрема Марс. Ексцентричні багатії наприклад придумали собі перегони по прямій на спеціальних пристроях. Пристрої ці ще недавно були лише на озброєнні спецслужб, а зараз їх може собі дозволити купити кожен пересічний мультимільярдер. Називаються вони Марсострибунами, а змагання Марсостриб.</P><P>Побудований марсострибун так, що може стрибнути за раз на одну з заданих відстаней, при чому стрибає марсострибун лише вперед.</P><P>Змагання відбуваються по прямій ділянці довжиною N, на якій можуть зустрічатися кратери (ями). Якщо гравець потрапляє в яму, він автоматично вибуває з гри. Виграє той, хто дістанеться в точку фінішу (конкретно в цю точку) за меншу кількість стрибків.</P><P><B>Вхідні дані</B></P><P>В першому рядку задано число N (1 <= N <= 100000) - довжина ділянки забігу (застрибу). Марсострибун стартує в точці з координатою 0 і щоб перемогти повинен потрапити в точку (N-1).</P><P>В наступному рядку знаходиться число К (1 <= K <= 100) - кількість можливих варіантів (довжин) стрибка, в наступних К рядках знаходяться ці можливі довжини. В наступному рядку знаходиться число М - кількість кратерів (ям). Далі в М рядках - координати кратерів (числа від 1 до N-1 включно).</P><P><B>Вихідні дані</B></P><P>Мінімальна кількість стрибків за яку марсострибун з точки 0 може попасти в точку (N-1). Якщо це неможливо вивести "-1" (без лапок).</P><P><B>Приклад введення</B></P><PRE>6</PRE><PRE>2</PRE><PRE>1</PRE><PRE>2</PRE><PRE>2</PRE><PRE>1</PRE><PRE>4</PRE><P><B>Приклад виведення</B></P><P><FONT size=2>3</FONT></P><P>Підказка: Спочатку марсострибун стрибає в точку 2, потім в точку 3, тоді в точку 5 - фініш і перемагає в Марсострибі.</P><P><B>Автори задачі:</B><I> Бабіля Руслан, Коркуна Остап</I></P>', 1000, 3072000, 2048, 0, 0, '', 1), +(1025, 'Міжпланетне повідомлення', '<P align=left><B>Завдання</B></P><P>Із планети Уран передається спеціальне повідомлення на планету Нептун. Повідомлення є дійсним числом start, яке передається на кінцеву планету через 4 інші планети в довільному порядку і з довільною кількістю повторів. На Юпітері (літера "u") число, яке прийшло на цю планету у повідомленні, множиться на 2, на Меркурії (m) - ділиться на 2, на Сатурні (s) - до повідомлення додається 9, на Плутоні (p) - віднімається 11.</P><P>Також зберігається разом із повідомленням шлях проходження цього повідомлення по планетах. Якщо повідомлення проходило через планети у такому порядку Юпітер, Меркурій, Сатурн, Плутон, Юпітер, а далі на Нептун, то шлях буде таким "umspu".</P><P>u - Юпітер</P><P>m - Меркурій</P><P>s - Сатурн</P><P>p - Плутон</P><P>Якщо відправлено повідомлення Y, то отримають повідомлення:</P><P>(Y*2/2+9-11)*2</P><P>Після чергового відправленого повідомлення виявляється, що у шляху повідомлення одна літера втрачена і замінилася на "х". Але жителям Нептуна обов''язково потрібно знати, яка ця планета, оскільки від цього залежить чи вони зможуть зіграти зіркобол із жителями Урану. Щоб знайти цю планету нептунці, знаючи число яке дійшло до них finish та шлях повідомлення (з одним втраченим символом), зв''язалися із уранцями і запитали у них, яке число відправляли вони - start.</P><P><STRONG>Примітка:</STRONG> При виконанні всіх арифметичних операцій жителі планет сонячної системи використовують стандартні типи даних з плаваючою крапкою (<STRONG>double</STRONG> в С++ чи <STRONG>real</STRONG> в Pascal)</P><P><B>Вхідні дані</B></P><P>У першому рядку два дійсних числа start, finish (-10^9 <= start, finish <= 10^9).</P><P>У наступному одне натуральне N - кількість планет у шляху повідомлення. (N <= 10000)</P><P>В останньому рядку сам шлях повідомлення, яке пошкодилося, заміною одного номера планети на "х".</P><P><B>Вихідні дані</B></P><P>Єдина літера, яка відповідає тій планеті, що повинна стояти на місці "х". Якщо знайти таке неможливо, то результат "-1" (без лапок).</P><P>Якщо можливі декілька варіантів відповіді, то вивести найперший з них (в порядку u, m, s, p).</P><P><B>Приклад введення 1</B></P><PRE>5 8</PRE><PRE>5</PRE><PRE>uxpmu</PRE><P><B>Приклад виведення 1</B></P><P><PRE>s</PRE><BR><P><B>Приклад введення 2</B></P><PRE>10 5</PRE><PRE>4</PRE><PRE>msxu</PRE><P><B>Приклад виведення 1</B></P><P><PRE>-1</PRE><P></P><P><B>Автори задачі:</B><I> Бабіля Руслан, Коркуна Остап</I></P>', 1000, 2048000, 2048, 0, 0, '', 1); +INSERT INTO `challenges` (`id`, `name`, `description`, `timelimit`, `memorylimit`, `outputlimit`, `tries`, `accepted`, `author`, `enabled`) VALUES +(1026, 'Полювання', '<P><B>Завдання</B></P><P>2077 рік. Не тільки наука і техніка з шаленою швидкісю ідуть вперед, також розвивається сфера розваг. Поїздкою на Багами чи Мальдіви тепер нікого не здивуєш, але в моді і далі залишається сафарі. Оскільки Африка перетворилась на найпотужніший (після України) центр бізнесу та підприємництва, то крім як на гроші, там полювати немає на що. Тепер сафарі відбувається на планеті Зайцеоленіон. Очевидно, що на цій планеті крім невеликої популяції зайцеоленіонців проживають ще й звірі (яке ж сафарі без звірів?), а саме космозайці і космоолені.</P><P>Правила сафарі дуже прості. Мисливцю видають звичайну однозарядну гіпернаноплазморушницю, висаджують посеред поля і дозволяють зробити один постріл. Всі звірі, яких промінь з гіпернаноплазморушниці поранить, або хоча б торкнеться стають здобиччю мисливця.Донецький бізнесмен на ім''я Лунат Рахметов за порадою своїх африканських колег вирішив спробувати щастя в зайцеоленіонському сафарі, але йому потрібна ваша допомога, адже він хоче підстрелити якомога більше звірів за свій один постріл.</P><P>Поле для сафарі є квадратом розміру 20000 на 20000 клітинок. Мисливця висаджують в центрі цього квадрата - точці з координатами (0;0), відповідно вершини квадратного поля мають координати (10000;10000), (10000;-10000), (-10000;-10000), (-10000;10000). В межах цього поля знаходяться M космозайців та N космооленів (0 <= M,N <= 200). Як космозайці так і космоолені через малу кількість зелені на планеті не мають що їсти і є дуже худими, тому будемо вважати, що зайці - це точки, олені - відрізки на даному полі. Гіпернаноплазморушниця стріляє променем, який ми будемо вважати променем з початком в точці (0;0). Космозаєць вважається підстреленим, якщо промінь пройде через точку, в якій знаходиться космозаєць. Космоолень вважається підстреленим, якщо промінь перетне відрізок, що зображає оленя, чи пройде крізь один з його кінців.</P><P>Жоден космозаєць не може сидіти на голові в мисливця, тобто в точці (0;0) та жоден космоолень не може лежати під мисливцем, тобто перетинати точку (0;0). Але космоолені та космозайці можуть перетинатися, чи знаходитись в одній і тій самій точці, тобто попавши в точку на якій сидять два космозайці, чи перетинаються два космоолені, ви підстрелите обох. Розміри космооленів можуть бути довільні, починаючи від 0 включно, але кожен космоолень знаходиться усім тілом в полі.</P><P>Ваше завдання вивести число - максимальну кількість тварин, яких Лунат Рахметов може підстрелити за один постріл.</P><P><B>Вхідні дані</B></P><P>В першому рядку задано ціле число M - кількість космозайців (0 <= M <= 200). В наступних M рядках - по два числа - координати Х та Y відповідного космозайця. Після цього записане число N - кількість космооленів (0 <= N <= 200), за ним в N рядках по чотири числа: перші два - координати Х та Y початку відрізка (початку космооленя), наступні два - координати Х та Y кінця відрізка (кінця космооленя). Всі координати є ЦІЛИМИ числами в межах від -10000 до 10000 включно.</P><P><B>Вихідні дані</B></P><P>Єдине ціле число - максимальна кількість звірів, яких можна вбити одним пострілом.</P><P><B>Приклад введення</B></P><PRE>1</PRE><PRE>-1 -1</PRE><PRE>3</PRE><PRE>1 2 2 1</PRE><PRE>2 3 4 2</PRE><PRE>3 -3 4 -4</PRE><P><B>Приклад виведення</B></P><P>2</P><P>Підказка: Мисливець може вбити одним пострілом першого та другого космооленів.</P><P><B>Автори задачі:</B><I> Бабіля Руслан, Коркуна Остап</I></P>', 1000, 3072000, 2048, 0, 0, '', 1), +(1027, 'Шлюзи', '<P align=left><B>Завдання</B></P><P>2077 рік. Космічні подорожі ввійшли в повсякденне життя майже всіх людей, а для декого це стало навіть роботою. Зокрема для працівників галактичної посильної служби в Віконній Галактиці. Їх робота полягає в доставці посилок та бандеролей від однієї планети до іншої. Але на шляху посильних стоїть досить вагома перешкода - Космічний Брандмауер - система захисту Віконної Галактики. Космічний Брандмауер захіщає Віконну Галактику від контрабандистів та космічних піратів.</P><P>Побудований Космічний Брандмауер за таким принципом: кожна планета закрита одним шлюзом від відкритого космосу. Якщо шлюз замкнений, то неможливо ні попасти на планету, ні покинути її. З планети А в планету В можна потрапити лише коли на планеті А та на планеті В відкриті шлюзи. Відкривається та закривається шлюз дуже складним пристроєм, побудованим на кінетично-магнітному ефекті насиченої плазми, під назвою Рубильник. Для кожного шлюза існує один і лише один рубильник. Рубильник для певного шлюзу може знаходитись на будьякій планеті, навіть на тій, де знаходиться шлюз.</P><P>На початку подорожі посильний знаходиться на планеті з номером 0 і шлюз на цій планеті відкритий. Всього в галактиці є N (1 <= N <= 100) планет. На всіх них (крім 0-вої) шлюзи закриті. В кінці подорожі посильний повинен знаходитися на останній планеті (з номером N-1), при чому на ВСІХ ІНШИХ планетах шлюзи повинні бути ЗАКРИТІ. По дорозі посильний може довільну кількість разів потрапляти на довільні планети та довільну кількість разів відкривати/закривати шлюзи. Важливою є лише кількість виходів в відкритий космос (кожен переліт з планети на планету супроводжується одним виходом у відкритий космос). Потрібно знайти таку найменшу кількість виходів у відкритий космос, за які можна виконати поставлене завдання.</P><P><B>Вхідні дані</B></P><P>В першому рядку записане число N (1 <= N <= 100) - кількість планет у галактиці. В другому рядку через пробіл записані N чисел: перше - номер планети, на якій знаходиться рубильник від шлюза на 0-вій планеті, друге - від шлюза 1-шої планети, і т. д. N-не - номер планети, на якій знаходиться рубильник від шлюза на останній (N-1)-шій планеті.</P><P><B>Вихідні дані</B></P><P>Невід''ємне число - мінімальна кількість виходів у відкритий космос, за які можна виконати завдання посильного. Якщо виконати завдання неможливо, то вивести "-1" (без лапок).</P><P><B>Приклад введення</B></P><P><PRE>3</PRE><PRE>1 2 0</PRE><P></P><P><B>Приклад виведення</B></P><P><PRE>3</PRE><P></P><P>Підказка: Спочатку посильний відкриває шлюз на планеті 2, тоді перелітає з планети 0 на планету 2, відкриває шлюз на планеті 1, перелітає з планети 2 на планету 1, закриває шлюз на планеті 0, перелітає з планети 1 на планету 2, закриває шлюз на планеті 1. Всього 3 виходи у відкритий космос.</P><P><B>Автори задачі:</B><I> Бабіля Руслан, Коркуна Остап</I></P>', 1000, 3072000, 2048, 0, 0, '', 1), +(1028, 'Факторіал', '<P align=left><B>Завдання</B></P><P>Підрахуйте кількість нулів в кінці запису факторіалу числа N.<P><B>Вхiднi данi</B></P><P>Єдине число N (1 <= N <= 2000000000)<P><B>Вихiднi данi</B></P><P>Єдине число - кількість нулів в кінці числа.<P><B>Приклад введення</B></P><P><PRE>8</PRE><P><B>Приклад виведення</B></P><P><PRE>1</PRE><BR>', 500, 3072000, 2048, 0, 0, '', 1), +(1029, 'Свічки', '<P align=left><B>Завдання</B></P><P>Миша св''яткує свій n-й день народження. Мами миші порізала св''ятковий торт на декілька частин зробивши рівно m розрізів по прямій лінії. Торт круглий з радіусом r і центром в точці (0; 0). За звичаєм, кількість свічок на торті така сама, скільки років виповнилось імениннику. Кожен гість вз''яв по одному шматкові торта. Миші цікаво, чи не попалось комусь із гостей більше одної свічки. <P><B>Вхідні дані</B></P><P>У першому рядку знаходяться цілі числа n, m і r (1 <= n <= 10000, 0 <= m <= 1000, 1 <= r <= 2000). <P>Наступні n рядків містять інформацію про координати x та y кожної свічки (цілі числа). Гарантується, що свічки знаходяться в середині круга і ніякі дві свічки не співпадають. Розмірами свічки можна знехтувати. <P>В останніх m рядках знаходиться трійки цілих чисел a, b, c - інформація про розрізи (-10000 <= a, b, c <= 10000). Це коефіціенти рівнянь прямих у вигляді ax+by+c=0. Ніякі два розрізи не співпадають, ніякий розріз не проходить через свічку. <P><B>Вихідні дані</B></P><P>Якщо кому-небуть з гостей попало більше одної свічки - вивести "YES", або "NO" в іншому випадку. <P><B>Приклад введення</B> <P><PRE>3 2 3</PRE><PRE>2 2</PRE><PRE>1 -1</PRE><PRE>-2 0</PRE><PRE>2 -1 0</PRE><PRE>0 1 -1</PRE><P><B>Приклад виведення</B> <P><PRE>NO</PRE><BR>', 1000, 3072000, 2048, 0, 0, '', 1), +(1030, 'Посладовність', '<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''"> <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Двоє вірних друзів Бен і Дон, з метою покращення своїх математичних навиків, вирішили якось побавитись в послідовність. Кожен з них по черзі обраховував наступний член послідовності за формулою:<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">X<SUB>N</SUB></SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">+1</SPAN></SUB></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> = </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">A</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">*</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">X<SUB>N</SUB></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> + </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">B</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">*</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">X<SUB>N</SUB></SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">-1</SPAN></SUB></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> + </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">C</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''"><o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: center" align=center><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-SIZE: 14pt; FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">На початку гри два перші члени послідовності були задані. Бавились вони один з одним довго й нудно. Спочатку один, потім другий, потім знову перший ... Одним словом по черзі...<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">На наступний день вони хотіли продовжити свою захоплюючу забавку. Але змогли пригадати тільки перший та останній члени...<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Допоможіть їм продовжити займатися улюбленою справою.<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Вхідні дані: </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">В першому рядочку міститься три цілі числа </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">A</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">, </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">B</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">, </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">C<o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">У наступному міститься число </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">N</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> – </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">кількість порахованих вчора елементів послідовності.<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">У третьому містяться два цілі числа </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">X</SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">1</SPAN></SUB></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">та </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">X<SUB>N</SUB></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"><o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> <o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Обмеження: 2</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-GB style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-GB"> <= </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">N</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-GB style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-GB"> <= 100000,</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"><o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">1</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-GB style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-GB"> <= </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">A, B</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-GB style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-GB"> <= 1000,</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> -1000000000 </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US"><= C <= 1000000</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">000</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">,<o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">-1000000</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-GB style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-GB"> <= </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">x<SUB>i</SUB></SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-GB style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-GB"> <= 100</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">0000</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-GB style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-GB">, </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">тобто всі елементи вчорашньої послідовності задовольняють цій умові.<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Існування розв’язку гарантується.<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Вихідні дані: </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Ціле число – </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">x</SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">2</SPAN></SUB></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">.<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Приклад вводу:<o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">2 3 -35<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">5<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">10 20<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Приклад виводу:<o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">8<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt"><SPAN lang=UK> <o:p></o:p></SPAN></P>', 500, 5120000, 204800, 0, 0, '', 1), +(1031, 'Фігурки', '<P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Маленький Антошка кожного ранку йде в садочок. Мама відводить його туди і залишає на цілий день. Любиме заняття малого бешкетника – малювати різні фігурки. Але так як Антошка ще досить маленький, малювати він вміє лише прямокутники та кола. Одного разу намалювавши прямокутник та два кола, Антон сів і задумався над цим творінням. Пізніше підійшла пані вихователь і теж собі почала милуватися шедевром мистецтва...<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" /><o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Через декілька років, вже будучи школярем, Антошка знайшов цю картину. І от тоді його зацікавило таке питання: яка спільна площа цих трьох фігур?<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Ну тут без допомоги Антоша не обійдеться...<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Вхідні дані: </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">В першому рядочку знаходяться </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">x</SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">1</SPAN></SUB></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">, </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">y</SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">1</SPAN></SUB></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">, </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">x</SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">2</SPAN></SUB></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">, </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">y</SPAN></B><B style="mso-bidi-font-weight: normal"><SUB><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">2</SPAN></SUB></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> - </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">координати двох протилежних вершин прямокутника<B style="mso-bidi-font-weight: normal">. </B>В другому та третьому рядках знаходяться трійки чисел </SPAN><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">x</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">, </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">y</SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">, </SPAN></B><B style="mso-bidi-font-weight: normal"><SPAN lang=EN-US style="FONT-FAMILY: ''Courier New''; mso-ansi-language: EN-US">r</SPAN></B><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> - </SPAN><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">координати центру та радіус кола.<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Обмеження: </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Всі числа цілі від <B style="mso-bidi-font-weight: normal">0</B> до <B style="mso-bidi-font-weight: normal">100</B> включно</SPAN><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">.<o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> <o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Вихідні дані: </SPAN></B><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Спільна площа з точністю до </SPAN><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">1</SPAN><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> знак</SPAN><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU">у</SPAN><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> після коми<B style="mso-bidi-font-weight: normal">. </B>Правила заокруглення – стандартні математичні.<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''"> <o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Приклад вводу:<o:p></o:p></SPAN></B></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">0 0 10 10<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">0 10 3<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">5 5 12<o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><SPAN style="FONT-FAMILY: ''Courier New''; mso-ansi-language: RU"> <o:p></o:p></SPAN></P><P class=MsoNormal style="MARGIN: 0cm 0cm 0pt; TEXT-INDENT: 27pt; TEXT-ALIGN: justify"><B style="mso-bidi-font-weight: normal"><SPAN lang=UK style="FONT-FAMILY: ''Courier New''">Приклад виводу:<o:p></o:p></SPAN></B></P><SPAN lang=UK style="FONT-SIZE: 12pt; FONT-FAMILY: ''Courier New''; mso-ansi-language: UK; mso-fareast-font-family: ''Times New Roman''; mso-fareast-language: UK; mso-bidi-language: AR-S... [truncated message content] |