На форумі обговорюються лише питання, пов'язані з олімпіадою
Ви не зайшли.
Vladislav Simonenko написав:
Spunky написав:
Andy написав:
6
1 4 6 2 2 4
3 3 5 6 1 5ответ 3
Сейчас исправлю, просто я вобще пишу на Паскале а для DeusEx перевел на С++, и случайно пропустил строчку.
я раньше писал на паскале, так что мог не стараться но все равно спасибо .
Поза форумом
И на чем удобнее писать: на Паскале или на Срр?
Поза форумом
Anna написав:
И на чем удобнее писать: на Паскале или на Срр?
С++ однозначно только надо привыкнуть. 3 года писал олимпиады на паскале и только сейчас понял, что С++ действительно язык высокого уровня и одинаковые задачи, на нем решаются быстрее. Освоить его чуть труднее, я переходил на него почти месяц, пока не освоился полностью. Могу книжку порекомендовать.
Поза форумом
Порекомендуй. Скажу спасибо. А ты пишешь под unix или под Windows?
Відредаговано Anna (2005-11-19 14:58:55)
Поза форумом
Anna написав:
Порекомендуй. Скажу спасибо. А ты пишешь под unix или под Windows?
а разницы? пишу под windows т.к. у меня тут стоят приложения мне необходимые, а на другой машине FreeBSD (UNIX).
Учебник для вузов. "С/С++. Программирование на языке высокого уровня.". Т.А. Павловская.
Могу дать почитать, т.к. мне она уже не нужна.
Поза форумом
DeusEx написав:
Andy написав:
у кого какой ответ для задачи Newpatience на такой тест:
100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 5731
Ты данные вручную вводил или как?
Поза форумом
Andy написав:
у кого какой ответ для задачи Newpatience на такой тест:
100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57
А у меня - 48!!!
Если данные корректны - то по идее правильно!!!
Відредаговано respect (2005-11-19 16:51:18)
Поза форумом
respect написав:
Andy написав:
у кого какой ответ для задачи Newpatience на такой тест:
100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57А у меня - 48!!!
Если данные корректны - то по идее правтильно!!!
У меня 27.
Идея вроде правильная.
Лично мне кажеться,что тем меньше переворотов - тем ближе к истине.
Истина гдето рядом...
Поза форумом
вручную
Поза форумом
Anna написав:
И на чем удобнее писать: на Паскале или на Срр?
Удобнее писать на Паскале.
Лучше на Плюсах
Лично я пишу на Паскале - всё равно потом на городской на Паскале писать придёться...
Поза форумом
jack_spektor написав:
respect написав:
Andy написав:
у кого какой ответ для задачи Newpatience на такой тест:
100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57А у меня - 48!!!
Если данные корректны - то по идее правтильно!!!У меня 27.
Идея вроде правильная.
Лично мне кажеться,что тем меньше переворотов - тем ближе к истине.
Истина гдето рядом...
Да, у всех ответы разные...
Поза форумом
DeusEx написав:
Учебник для вузов. "С/С++. Программирование на языке высокого уровня.". Т.А. Павловская.
Могу дать почитать, т.к. мне она уже не нужна.
Павловская?Это то,что со страусом на обложке?
Лучше купить Шилдта.Там гораздо больше полезного материала.
Поза форумом
А у Andy какой ответ на этот придуманный вручную тест????
Поза форумом
100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57
правильно - 48
Поза форумом
Angry Coder написав:
А ты откуда знаешь правильный ответ???
Поза форумом
Angry Coder написав:
А ты откуда знаешь правильный ответ???
Поза форумом
48
Поза форумом
Angry Coder написав:
100
98 39 69 13 2 40 84 85 16 78 98 22 34 4 99 86 94 36 11 33 90 86 75 10 35 55 63 96 26 30 28 49 17 41 50 15 99 37 12 33 65 34 24 60 25 54 50 79 65 31 53 8 36 1 84 7 22 91 61 100 69 42 59 71 38 12 23 58 42 53 83 21 46 40 52 89 74 5 77 76 44 6 20 58 73 17 18 44 52 81 88 54 14 55 37 64 56 9 97 78
51 14 35 71 83 57 88 31 11 29 38 15 16 70 97 43 47 20 62 70 26 66 93 48 47 39 45 94 48 80 77 95 82 30 1 85 10 62 25 3 79 67 7 13 64 29 72 72 82 18 19 59 92 24 56 43 60 32 27 66 23 81 92 95 9 74 63 87 61 75 96 89 100 90 28 4 68 21 6 19 91 68 3 41 67 27 87 93 49 45 76 2 46 8 32 51 73 80 5 57
правильно - 48
Ты мой код смотрел?
Не может быть,чтобы больший ответ был правильный.
Посмотри код - там ошибка может быть только при превышении кол-ва операций.Меньше правильного там быть не может.
Я написав:
program newpatiance;
type
card=record
t,b:integer;
end;
cds=array[1..1000]of card;
procedure turn(var c:card);
var
temp:integer;
begin
temp:=c.t;
c.t:=c.b;
c.b:=temp;
end;
procedure sort(var cards:cds;n:integer);
var
temp:card;
i,j:integer;
changed:boolean;
begin
for i:=1 to N-1 do
for j:=1 to N-1 do
if(cards[j].t>cards[j+1].t)or((cards[j].t=cards[j+1].t)and(cards[j].b>cards[j+1].b))then
begin
temp:=cards[j];
cards[j]:=cards[j+1];
cards[j+1]:=temp;
end;
end;
procedure show(c:cds;n:integer);
var
i:integer;
begin
for i:=1 to n do
write('(',c[i].t,' ',c[i].b,') ');
writeln;
end;
var
cards:cds;
n,res:integer;
i,z,r1,r2:integer;
f:Text;
begin
assign(f,'in.txt');
reset(f);
read(f,n);
for i:=1 to n do read(f,cards[i].t);
for i:=1 to n do read(f,cards[i].b);
close(f);
{show(cards,n);}
sort(cards,n);
{show(cards,n);}
res:=0;
for i:=1 to n do
begin
if(cards[i].t=cards[i+1].t)then
if(cards[i].b=cards[i+1].b)then
begin
turn(cards[i]);
sort(cards,n);
{ show(cards,n);}
inc(res);
end else
begin
for z:=1 to n do if(cards[z].t=cards[i].b)then turn(cards[i+1]) else turn(cards[i]);
sort(cards,n);
{ show(cards,n);}
inc(res);
end;
end;
writeln(res);
end.
Создаёшь файл "in.txt".Вставляшь туда тест и проверяй.Ответ - 27.
Можешь показать твоё решение?
Відредаговано jack_spektor (2005-11-19 17:11:42)
Поза форумом
Блин, ну сказано 48 - правильно!!! Не порть мне настроение пока не выяснилось что это не правильно!!!
Поза форумом
#include <stdio.h>
#include <vector>
#include <deque>
#include <utility>
#include <algorithm>
using namespace std;
int main()
{
int i,n;
scanf("%d",&n);
vector<pair<int,int> > A(n);
vector<char> U(n,1);
vector<pair<int,int> > M(66000,pair<int,int>(-1,-1));
for(i=0;i<n;i++){
scanf("%d",&A[i].first);
if (M[A[i].first].first<0) M[A[i].first].first=i;
else M[A[i].first].second=i;
}
for(i=0;i<n;i++){
scanf("%d",&A[i].second);
if (M[A[i].second].first<0) M[A[i].second].first=i;
else M[A[i].second].second=i;
}
int res=0;
for(i=0;i<n;i++) if (U[i]){
U[i]=0;
int j=i;
int fl=1;
int t1=0,t2=1;
deque<int> Q;
while (fl || U[j]){
fl=0;
int next=M[A[j].second].first;
if (next==j) next=M[A[j].second].second;
if (A[next].first!=A[j].second){
t1++;
swap(A[next].first,A[next].second);
Q.push_back(next);
}
j=next;
}
while (!Q.empty()){
swap(A[Q[0]].first,A[Q[0]].second);
Q.pop_front();
}
fl=1;
swap(A[i].first,A[i].second);
while (fl || U[j]){
fl=0;
int next=M[A[j].second].first;
if (next==j) next=M[A[j].second].second;
if (A[next].first!=A[j].second){
t2++;
swap(A[next].first,A[next].second);
}
U[j]=0;
j=next;
}
if (t2<t1) t1=t2;
res+=t1;
}
printf("%d",res);
return 0;
}
несколоько тяжелоя, для разбора. но оптимальное. разве что я мог где-то ошибится:)
Поза форумом
respect написав:
Блин, ну сказано 48 - правильно!!! Не порть мне настроение пока не выяснилось что это не правильно!!!
Это выяснится не ранее того момента, когда покажут результаты :-)
Поза форумом
Раз у двух - у меня и у Злого Кодера ответы сошлись - значит правильно!!
Ведь больше ни у кого не совпало!!!!
Поза форумом
Angry Coder написав:
#include <stdio.h>
#include <vector>
#include <deque>
#include <utility>
#include <algorithm>
using namespace std;
int main()
{
int i,n;
scanf("%d",&n);
vector<pair<int,int> > A(n);
vector<char> U(n,1);
vector<pair<int,int> > M(66000,pair<int,int>(-1,-1));
for(i=0;i<n;i++){
scanf("%d",&A[i].first);
if (M[A[i].first].first<0) M[A[i].first].first=i;
else M[A[i].first].second=i;
}
for(i=0;i<n;i++){
scanf("%d",&A[i].second);
if (M[A[i].second].first<0) M[A[i].second].first=i;
else M[A[i].second].second=i;
}
int res=0;
for(i=0;i<n;i++) if (U[i]){
U[i]=0;
int j=i;
int fl=1;
int t1=0,t2=1;
deque<int> Q;
while (fl || U[j]){
fl=0;
int next=M[A[j].second].first;
if (next==j) next=M[A[j].second].second;
if (A[next].first!=A[j].second){
t1++;
swap(A[next].first,A[next].second);
Q.push_back(next);
}
j=next;
}
while (!Q.empty()){
swap(A[Q[0]].first,A[Q[0]].second);
Q.pop_front();
}
fl=1;
swap(A[i].first,A[i].second);
while (fl || U[j]){
fl=0;
int next=M[A[j].second].first;
if (next==j) next=M[A[j].second].second;
if (A[next].first!=A[j].second){
t2++;
swap(A[next].first,A[next].second);
}
U[j]=0;
j=next;
}
if (t2<t1) t1=t2;
res+=t1;
}
printf("%d",res);
return 0;
}
несколоько тяжелоя, для разбора. но оптимальное. разве что я мог где-то ошибится:)
К сожалению Си я настолько хорошо не знаю...
Знал бы - разобрал бы.
Поза форумом
respect написав:
Раз у двух - у меня и у Злого Кодера ответы сошлись - значит правильно!!
Ведь больше ни у кого не совпало!!!!
Единственный вариант рассудить нас - ручками проверять...
Шутка.
И вообще Кодер вовсем не злой.Он аг-р-р-есивный... :-)
angry - сердитый,аггресивный (англ.)
Відредаговано jack_spektor (2005-11-19 17:24:12)
Поза форумом
Удачи тебе вручную считать!!!
Ладно закругляемся!!!
В вторник-среду будут результаты тогда и посмотрим, зачем форум засорять!!!
Поза форумом