На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
По задачі повний вронг (((( базові тести вдома проходять - на сервері - жодного.... :'(
//#includes
using namespace std;
long long n_tim,n_tur;
int main(){
char c;
long long n_rig=0,n_sty=0;
while((c=getchar())!='\n'&&c!=EOF){
if('>'==c){
n_rig++;
if(n_sty>0)
n_sty--;
}
else{
n_tur+=n_rig;
n_tim=n_rig+n_sty;
if(n_rig>0)
n_sty++;
}
}
cout<<n_tim<<" "<<n_tur<<"\n";
exit(0);
}
Дякую Dark_Dimius-у...
Я виправив одну строчку
old: while((c=getchar())!='\n'&&c!=EOF)
new: while((c=getchar())!='\n'&&c!=EOF&&(c=='>'||c=='<'))
І ПРОЙШЛО 20 ТЕСТІВ!!!! це просто якась фігня....... не розумію ЧОМУ в перший раз воно не пройшло - там шо в тестах не було '\n' в кінці рядка?????? Чи це взагалі можна вважати моєю помилкою, чи помилкою оформлення тестів?? дивно.....(((((((((( я розраховував що кожний тест закінчуватиметься на '\n'
Відредаговано askold (2007-11-08 15:32:03)
Поза форумом
А какой ответ сервера: WA,BD,TL,RE,...
Судя по виду, похоже на неправильный алгоритм. Хотя тут утверждать не берусь - глубоко в идею не закапывался.
Что хранится в n_rig и n_sty?
Поза форумом
держы АС решение и сравнивай
#include <cstdio>
#include <cmath>
#include<iostream>
using namespace std;
int main()
{
char c,p;/// b->> f-<<
long long int b,f,s,maxf,sss,q;s=0;b=0;f=0;maxf=0;sss=0;
q=0;p=0;
while(scanf("%c",&c)>=0&&(c=='>'||c=='<'))
{
if (p==0)while(c=='<'&&scanf("%c",&c)>=0);
if (c=='>'){b++;if (b>1&&sss&&p==c)q++;}
else {f++; s+=b;maxf=b+f;sss=sss-q;q=0;if (sss<0) sss=0;
if ((f>1)&&p==c)sss++;};
p=c;
}
cout<<maxf-f+sss<<' '<<s<<endl;//printf("%i %i\n",maxf-f+sss,s);
return 0;
}
Поза форумом
reiten написав:
А какой ответ сервера: WA,BD,TL,RE,...
Судя по виду, похоже на неправильный алгоритм. Хотя тут утверждать не берусь - глубоко в идею не закапывался.
Что хранится в n_rig и n_sty?
Помоему очевидно что n_rig - колво "правых" солдат на даный шаг. Воощето неясно что может быть если свой тестинг проходит но онлайн не проходит. Может... е-еее.... а вообще фиг ево знает. может очредной загон с сишкой.
Поза форумом
Dark_Dimius написав:
держы АС решение и сравнивай
#include <cstdio>
#include <cmath>
#include<iostream>
using namespace std;
int main()
{
char c,p;/// b->> f-<<
long long int b,f,s,maxf,sss,q;s=0;b=0;f=0;maxf=0;sss=0;
q=0;p=0;
while(scanf("%c",&c)>=0&&(c=='>'||c=='<'))
{
if (p==0)while(c=='<'&&scanf("%c",&c)>=0);
if (c=='>'){b++;if (b>1&&sss&&p==c)q++;}
else {f++; s+=b;maxf=b+f;sss=sss-q;q=0;if (sss<0) sss=0;
if ((f>1)&&p==c)sss++;};
p=c;
}
cout<<maxf-f+sss<<' '<<s<<endl;//printf("%i %i\n",maxf-f+sss,s);
return 0;
}
genuisly
Поза форумом
necro написав:
Dark_Dimius написав:
держы АС решение и сравнивай
#include <cstdio>
#include <cmath>
#include<iostream>
using namespace std;
int main()
{
char c,p;/// b->> f-<<
long long int b,f,s,maxf,sss,q;s=0;b=0;f=0;maxf=0;sss=0;
q=0;p=0;
while(scanf("%c",&c)>=0&&(c=='>'||c=='<'))
{
if (p==0)while(c=='<'&&scanf("%c",&c)>=0);
if (c=='>'){b++;if (b>1&&sss&&p==c)q++;}
else {f++; s+=b;maxf=b+f;sss=sss-q;q=0;if (sss<0) sss=0;
if ((f>1)&&p==c)sss++;};
p=c;
}
cout<<maxf-f+sss<<' '<<s<<endl;//printf("%i %i\n",maxf-f+sss,s);
return 0;
}genuisly
не совсем понял... похвала или стеб?
Поза форумом
Не. Не стеб молоток что заАСептил. Просто автор я думаю знает верное решение но реализация может быть разной. Проблема то не во вронг ансверах а в том что на входных тестах у автора работает а в онлайн тестилке - нет на тех же тестах входных.
Поза форумом
askold написав:
По задачі повний вронг (((( базові тести вдома проходять - на сервері - жодного.... :'(
//#includes
using namespace std;
long long n_tim,n_tur;
int main(){
char c;
long long n_rig=0,n_sty=0;
while((c=getchar())!='\n'&&c!=EOF){
if('>'==c){
n_rig++;
if(n_sty>0)
n_sty--;
}
else{
n_tur+=n_rig;
n_tim=n_rig+n_sty;
if(n_rig>0)
n_sty++;
}
}
cout<<n_tim<<" "<<n_tur<<"\n";
exit(0);
}
Кому невлом - допоможіть розібратися в чому просак???
а если в конце строки какойто бред, а не > и < добавь проверку &&(c=='>'||c=='<')
Поза форумом
Dark_Dimius написав:
а если в конце строки какойто бред, а не > и < добавь проверку &&(c=='>'||c=='<')
А как в конце строки может оказаться какой-то бред? Тогда это уже будут некорректные тесты. На Паскале левых символов не наблюдается (проверял). А тут что, какой-то прикол с Сишкой?
Поза форумом
Шановний askold на жаль помилку допустили таки Ви. Ви написали:
long long n_tim,n_tur;
а треба так
long long n_tim = 0,n_tur = 0;
Наприклад в мене на такому тестi ><><<<<><><<><>><<><><><> ваша програма виводить :
16 242352359
замiсть 14 66. При виправленнi помилки все добре.
Поза форумом
Yevgeniy написав:
Шановний askold на жаль помилку допустили таки Ви. Ви написали:
long long n_tim,n_tur;
а треба так
long long n_tim = 0,n_tur = 0;
Наприклад в мене на такому тестi ><><<<<><><<><>><<><><><> ваша програма виводить :
16 242352359
замiсть 14 66. При виправленнi помилки все добре.
ето завситот компилятора, конечно метод заявленый вами нарерняка, но факт в том что при добавлении того что я на писал его код проходит все тесты
Поза форумом
partisan написав:
Dark_Dimius написав:
а если в конце строки какойто бред, а не > и < добавь проверку &&(c=='>'||c=='<')
А как в конце строки может оказаться какой-то бред? Тогда это уже будут некорректные тесты. На Паскале левых символов не наблюдается (проверял). А тут что, какой-то прикол с Сишкой?
из личной переписки
Askold, 11/8/2007 3:14:26 PM:
"Дякую Dark_Dimius-у...
Я виправив одну строчку
old: while((c=getchar())!='\n'&&c!=EOF)
new: while((c=getchar())!='\n'&&c!=EOF&&(c=='>'||c=='<'))
І ПРОЙШЛО 20 ТЕСТІВ!!!! це просто якась фігня....... не розумію ЧОМУ в перший раз воно не пройшло - там шо в тестах не було '\n' в кінці рядка?????? Чи це взагалі можна вважати моєю помилкою, чи помилкою оформлення тестів?? дивно.....(((((((((("
вот резалт, причина - хз, может приколы с переводом каретки или чтото из етой оперы
Відредаговано Dark_Dimius (2007-11-08 18:21:12)
Поза форумом
У меня был прикол. Когда я читал данные, проверяя не поступающие символы, а до конца файла (см. потока), то задача в онлайне вылетала по тайм-лимиту - 0,07 sec.
Поза форумом
Nicky Nick написав:
У меня был прикол. Когда я читал данные, проверяя не поступающие символы, а до конца файла (см. потока), то задача в онлайне вылетала по тайм-лимиту - 0,07 sec.
похоже по некоторой причине ЕОФ не приходит((((9
Поза форумом
Возможно читается лишний перевод строки? По-ходу там два лишних символа, потому что вот такой код у них на сервере (но не у меня на компе!) читает правильно:
vector <char> a;
char t10 = 0;
while ( t10 != 10 )
{
scanf ( "%c", &t10 );
a.push_back ( t10 );
}
a.pop_back ();
a.pop_back ();
Поза форумом
Silicious Man написав:
Возможно читается лишний перевод строки? По-ходу там два лишних символа, потому что вот такой код у них на сервере (но не у меня на компе!) читает правильно:
vector <char> a;
char t10 = 0;
while ( t10 != 10 )
{
scanf ( "%c", &t10 );
a.push_back ( t10 );
}
a.pop_back ();
a.pop_back ();
как всегда идут сначала перевод строки\n (10-символ) а потом перевод каретки \r(13) если тесты набирались в винде, если в линухе то ето можно настраивать... часто перевод каретки не ставят
Поза форумом
Dark_Dimius написав:
Silicious Man написав:
Возможно читается лишний перевод строки? По-ходу там два лишних символа, потому что вот такой код у них на сервере (но не у меня на компе!) читает правильно:
vector <char> a;
char t10 = 0;
while ( t10 != 10 )
{
scanf ( "%c", &t10 );
a.push_back ( t10 );
}
a.pop_back ();
a.pop_back ();как всегда идут сначала перевод строки\n (10-символ) а потом перевод каретки \r(13) если тесты набирались в винде, если в линухе то ето можно настраивать... часто перевод каретки не ставят
С точностью до наоборот. В винде возврат каретки имеет код 13, а перевод строки - код 10. Первый идёт раньше, это да.
Відредаговано Skiminok (2007-11-12 13:38:35)
Поза форумом
Поправочка. Если формат файла соответствует ОС, то по стандарту при чтении в текстовом режиме программа все равно получит только '\n', не зависимо от того, в линуксе дело, или в винде. Преобразование будет проведено на уровне функций ввода-вывода.
А вот если в линуксе читать файл с досовскими концами строки, то '\r' останутся на своих местах.
Поза форумом