ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1685. Орфография

why?
Послано aaa 28 фев 2009 17:40
where i am wrong please write me aramvmv@mail.ru
#include <iostream>
using namespace std;
__int64 i,n,k, o[20110]={0},l=0, s,t,j,m,r;    char a[20110], c[20110];
int main()
{
cin.ignore();
cin.getline(a,20110); n=strlen(a); k=n;
t=1; while(k!=0) {c[(k+1)/2]=a[t]; o[(k+1)/2]=1; k=(k+1)/2; t++; }
for(j=0;j<n/4;j++) {
for(i=1;i<=n;i++) if(o[i]==0) {l=1; m=s=i; while(o[i+l]==0)
{l++; m+=i+l;}
if(l==0) break;
if(l==1) {c[s]=a[t]; o[s]=1;} else {k=m/l;
while(k>=s)
{c[k]=a[t]; o[(k+1)/2]=1; l/=2;m=0; for(r=s;r<s+l;r++)m+=r; k=m/l; t++; }}}}
for(i=1;i<=n;i++) cout<<c[i]; return 0;}
Re: why?
Послано riVers 7 мар 2009 12:49
time limit?
Re: why?
Послано aaa 8 мар 2009 15:24
no crash
Re: why?
Послано aaa 8 мар 2009 15:27
here is my new solution but again crash
#include <iostream>
using namespace std;
__int64 i,n,k, o[20110]={0},l=0, s,t,j,m,r;    char a[20110], c[20110];
int main()
{
cin.ignore();
cin.getline(a,20110); n=strlen(a); k=n;
t=1; while(k!=0) {c[(k+1)/2]=a[t]; o[(k+1)/2]=1; k=(k+1)/2; t++; }
for(j=0;j<n/4;j++) {
for(i=1;i<=n;i++) if(o[i]==0) {l=1; s=i; while(o[i+l]==0)
{l++; }
if(l==0) break;
if(l==1) {c[s]=a[t]; o[s]=1;} else {k=s+l;
while(k>=s)
{c[(k+s)/2]=a[t]; o[(k+s)/2]=1; k=(k+s)/2;  t++; }}l=0; }}
for(i=1;i<=n;i++) cout<<c[i]; return 0;}
Re: why?
Послано Oleg Strekalovsky [Vologda SPU] 18 май 2009 18:55
I solved this problem by Java with recursive function.
I think it's more easy :)
Re: why?
Послано edya 23 авг 2011 15:06
recursive function is the best method for solving this problem, i thenk =D