PDA

Դիտել ողջ տարբերակը : ՀՊՃՀ ինֆորմատիկայի օլիմպիադա



n1djhayko
07.04.2011, 23:20
Ովքեր են շաբաթ օրը մասնակցելու ինֆորմի օլիմպիադային???

armen9494
08.04.2011, 18:54
Ովքեր են շաբաթ օրը մասնակցելու ինֆորմի օլիմպիադային???

Ես ուզում էի մասնակցել, բայց ոնց որ ուշացել եմ, ինչ-որ հայտ պետք ա ներկայացնեինք, չեմ իմացել:

n1djhayko
08.04.2011, 19:20
Ես ուզում էի մասնակցել, բայց ոնց որ ուշացել եմ, ինչ-որ հայտ պետք ա ներկայացնեինք, չեմ իմացել:
Պարզա,ես կփորձեմ իմ ուժերը,իսկ դու որ կուրս ես?

armen9494
08.04.2011, 19:47
Պարզա,ես կփորձեմ իմ ուժերը,իսկ դու որ կուրս ես?

Առաջին, իսկ դու՞: Իսկ կարողա իմանաս մոտավորապես ի՞նչ ա լինելու: Որ ճիշտը ասեմ, ես հույս չունեմ, որ ընդեղ գնալով ինչ-որ տեղ կզբաղացնեմ, ուղղակի ինձ թվումա, որ ինչ-որ բան կսովորեմ:

Անամնիսիս
08.04.2011, 21:09
Բարև ձեզ :)
Վաղը ես էլ եմ մասնակցելու այդ օլեմպիադային
Եվ դրա մասին երեկ եմ իմացել
Անգամ կոնկրետ չգիտենք ինչ ոլորտից է լինելու :(
Եթե ինչ որ մեկը գիտի կարող է հակիրճ ինֆորմացիա տա
Նախորոք շնորհակալություն և հաջողություն:)

armen9494
08.04.2011, 21:42
Բարև ձեզ :)
Վաղը ես էլ եմ մասնակցելու այդ օլեմպիադային
Եվ դրա մասին երեկ եմ իմացել
Անգամ կոնկրետ չգիտենք ինչ ոլորտից է լինելու :(
Եթե ինչ որ մեկը գիտի կարող է հակիրճ ինֆորմացիա տա
Նախորոք շնորհակալություն և հաջողություն:)

Ես էլ չգիտեմ թե ինչ է լինելու, բայց գիտեմ, որ ֆայլեր լինելու են: Իսկ էդ օլիմպիադային մասնակցելու համար նախորոք պետք էր գրանցվել?

n1djhayko
08.04.2011, 21:52
Ես էլ չգիտեմ թե ինչ է լինելու, բայց գիտեմ, որ ֆայլեր լինելու են: Իսկ էդ օլիմպիադային մասնակցելու համար նախորոք պետք էր գրանցվել?
Հա Արմեն ջան,ես երեկ եմ հայտագրվել

n1djhayko
08.04.2011, 21:56
Անգամ կոնկրետ չգիտենք ինչ ոլորտից է լինելու :(
Եթե ինչ որ մեկը գիտի կարող է հակիրճ ինֆորմացիա տա
Ես նույնպես տեղյակ չեմ

հաջողություն:)
Շնորհակալություն

n1djhayko
08.04.2011, 22:01
armen9494 և Անամնիսիս դուք որ ֆակուլտետներում եք սովորում???

armen9494
08.04.2011, 22:47
armen9494 և Անամնիսիս դուք որ ֆակուլտետներում եք սովորում???

Ես VT-ի առաջին կուրս եմ, իսկ դու՞:

n1djhayko
08.04.2011, 22:56
Ես VT-ի առաջին կուրս եմ, իսկ դու՞:
ես կիրառական մաթեմատիկայի 1-ին կուրսից

armen9494
08.04.2011, 23:00
ես կիրառական մաթեմատիկայի 1-ին կուրսից

Ինչքան հասկացա Պասկալ ես անցնում: Ո՞ր թեմաներն եք անցել Պասկալից: Ավելի ճիշտը, ո՞րը գիտես:

n1djhayko
08.04.2011, 23:04
Ինչքան հասկացա Պասկալ ես անցնում: Ո՞ր թեմաներն եք անցել Պասկալից: Ավելի ճիշտը, ո՞րը գիտես:
դե էս շաբաթ ենք նոր-նոր անցել ֆայլեր ու ընդամենը մի դասախոսություն

armen9494
08.04.2011, 23:05
դե էս շաբաթ ենք նոր-նոր անցել ֆայլեր ու ընդամենը մի դասախոսություն

Մենք հլը ֆայլեր չենք անցել, բայց ես մի քիչ գիտեմ: Իսկ գրաֆիկա անցնու՞մ եք:

n1djhayko
08.04.2011, 23:07
Չէ դեռ,,,

n1djhayko
08.04.2011, 23:07
իսկ դուք անցնում եք?

armen9494
08.04.2011, 23:11
Չէ դեռ,,,

Մենք ֆայլերի փոխարեն գրաֆիկա ենք անցնում, բայց ես մինչև էդ արդեն բավականին գիտեի գրաֆիկան: Օլիմպիադան գոնե մոտավորապես գիտես ի՞նչ թեմաներից ա: Ինձ դասախոսս ասեց, որ պետք ա "կարդալն" ու "գրելը" անել ֆայլերով:

n1djhayko
08.04.2011, 23:12
c++ ինչ որ չափով գիտես Արմեն?

Անամնիսիս
08.04.2011, 23:13
armen9494 և Անամնիսիս դուք որ ֆակուլտետներում եք սովորում???

Ես Հաշվողական տեխնիկա և ինֆորմատիկա :)
Մենք Վանաձորից ենք

n1djhayko
08.04.2011, 23:13
Մենք ֆայլերի փոխարեն գրաֆիկա ենք անցնում, բայց ես մինչև էդ արդեն բավականին գիտեի գրաֆիկան: Օլիմպիադան գոնե մոտավորապես գիտես ի՞նչ թեմաներից ա: Ինձ դասախոսս ասեց, որ պետք ա "կարդալն" ու "գրելը" անել ֆայլերով:
Ճիշտն ասած մեզ ոշմի բան չէն ասել

armen9494
08.04.2011, 23:20
c++ ինչ որ չափով գիտես Արմեն?

Չէ, C++-ից ընդհանրապես գաղափար չունեմ, բայց շուտով (երևի մոտակա 2 շաբաթը) կսկսեմ արդեն դա սովորել, որովհետև Պասկալով խորանալն արդեն անիմաստա, նամանավանդ գրաֆիկան- լրիվ ապուշությունա, անհնարա նորմալ ձևի ինտերֆեյսով ինչ որ բան գրել: Հենց նայում ես, միանգամից հասկանում ես, որ նոյի թվի ինչ-որ լեզվով ա գրած: Իսկ C++-ը ուզում եմ գնամ ինչ-որ դասախոսի մոտ մի քանի դաս սովորացնի: Ես եթե սկիզբը (պարզ ծրագրերը) հասկացա, մնացածը ինքս կկարդամ, առավել ևս, որ ալգորիթմներից վատ չեմ:

n1djhayko
08.04.2011, 23:20
Մասնակիցներին մաղթում եմ հաջողություն...

armen9494
08.04.2011, 23:21
Ճիշտն ասած մեզ ոշմի բան չէն ասել

մեզ էլ ոչ մի բան չեն ասել, չեմ համարում, որ դա ինչ-որ մի լուրջ հուշումա

armen9494
08.04.2011, 23:21
Ես Հաշվողական տեխնիկա և ինֆորմատիկա :)
Մենք Վանաձորից ենք

Ո՞ր կուրս ես:

n1djhayko
08.04.2011, 23:23
մեզ էլ ոչ մի բան չեն ասել, չեմ համարում, որ դա ինչ-որ մի լուրջ հուշումա
Համենայն դեպս ինչ որ չափով գաղափար կազմեցի ,մերսի ինֆո-ի համար...կտեսնվենք օլիմպիադայում

armen9494
08.04.2011, 23:27
Համենայն դեպս ինչ որ չափով գաղափար կազմեցի ,մերսի ինֆո-ի համար...կտեսնվենք օլիմպիադայում

Հայկո ջան ես չեմ գալու, չեմ իմացել երբ պետք ա գրանցվեինք, չեմ գրանցվել:

Անամնիսիս
08.04.2011, 23:40
Ո՞ր կուրս ես:

մեր խումբը, որ գալու է կազմված է հինգ հոգուց
երեքը չորորդ կուրսից են իսկ երկուսս էլ երրորդ ։(

armen9494
08.04.2011, 23:41
մեր խումբը, որ գալու է կազմված է հինգ հոգուց
երեքը չորորդ կուրսից են իսկ երկուսս էլ երրորդ ։(

Իսկ մենք դեռ առաջին:)

Անամնիսիս
08.04.2011, 23:48
Իսկ մենք դեռ առաջին:)

Նկատեցինք :)
Դե լավ մաղթում ենք բոլորին հաջողություն

armen9494
09.04.2011, 19:33
հը՞ն, ի՞նչ արեցիք:

n1djhayko
09.04.2011, 21:56
Համարյա ոշմիբան

armen9494
09.04.2011, 23:08
Համարյա ոշմիբան

Ինչի՞: Որ խնդրեմ, կասե՞ս, թե ինչ ձևի առաջադրանքներ էին: Ինձ շաաաաաատ հետաքրքիրա:

n1djhayko
09.04.2011, 23:18
Ինչի՞: Որ խնդրեմ, կասե՞ս, թե ինչ ձևի առաջադրանքներ էին: Ինձ շաաաաաատ հետաքրքիրա:
Ամենա առաջինը էս խնդիրնա (http://informatics.mccme.ru/moodle/mod/statements/view3.php?id=&chapterid=1360) եղել

n1djhayko
09.04.2011, 23:34
3-րդը դրանցից ամենահեշտնա եղել...
Տրված է n բնական թիվը և x1,x2,...,xn միաչափ զանգվածը:Տրված զանգվածից ստանալ և արտածել նոր զանգված ,որի տարրերը լրացվում են հետևյալ կարգով.
. սկզբում լրացվում են բոլոր այն եռյակները,որոնցում տարրերը դասավորված են հետևյալ հաջորդականությամբ-բացասական,զրո և դրական.
. այնուհետև լրացվում են բոլոր այն հնարավոր երկյակները,որոնցում տարրերը դասավորված են հետևյալ հաջորդականությամբ- կամ(բացասական,զրո) կամ (բացասական,դրական) կամ (զրո,դրական).
. վերջում գրվում են մնացած տարրերը.
Տրված և ստացված զանգվածներում բացասական և դրական տարրերի հերթականությունը չպետք է խախտել.
Մուտք. INPUT.txt ֆայլը միակ տողում պարունակում է իրարից մեկ բացատանիշով բաժանված n հատ բնական թվեր.
Ելք.OUTPUT.txt ֆայլում իրարից մեկ բացատանիշով բաժանված պետք է գրել ստացված զանգվածի տարրերը:
Օրինակ
Մուտք 3 -4 7 -6 0 5 4 -8 9 -3 8
Ելք -4 0 3 -6 7 -8 5 -3 4 9 8
Էս խնդրի համարյա 80%-ը գրել էի

armen9494
10.04.2011, 16:58
3-րդը դրանցից ամենահեշտնա եղել...
Տրված է n բնական թիվը և x1,x2,...,xn միաչափ զանգվածը:Տրված զանգվածից ստանալ և արտածել նոր զանգված ,որի տարրերը լրացվում են հետևյալ կարգով.
. սկզբում լրացվում են բոլոր այն եռյակները,որոնցում տարրերը դասավորված են հետևյալ հաջորդականությամբ-բացասական,զրո և դրական.
. այնուհետև լրացվում են բոլոր այն հնարավոր երկյակները,որոնցում տարրերը դասավորված են հետևյալ հաջորդականությամբ- կամ(բացասական,զրո) կամ (բացասական,դրական) կամ (զրո,դրական).
. վերջում գրվում են մնացած տարրերը.
Տրված և ստացված զանգվածներում բացասական և դրական տարրերի հերթականությունը չպետք է խախտել.
Մուտք. INPUT.txt ֆայլը միակ տողում պարունակում է իրարից մեկ բացատանիշով բաժանված n հատ բնական թվեր.
Ելք.OUTPUT.txt ֆայլում իրարից մեկ բացատանիշով բաժանված պետք է գրել ստացված զանգվածի տարրերը:
Օրինակ
Մուտք 3 -4 7 -6 0 5 4 -8 9 -3 8
Ելք -4 0 3 -6 7 -8 5 -3 4 9 8
Էս խնդրի համարյա 80%-ը գրել էի

var x,y,z,u,m:array[1..100] of integer;
a,b,c,min,mid,max,h,i,n:integer;
begin read(n);
a:=0; b:=0; c:=0; min:=0; mid:=0; max:=0; h:=0;
For i:=1 to n do read(x[i]);
For i:=1 to n do
if x[i]<0 then begin a:=a+1; y[a]:=x[i] end
else if x[i]=0 then begin b:=b+1; z[b]:=x[i] end
else begin c:=c+1; u[c]:=x[i] end;
If a>b then begin max:=a; min:=b end
else begin max:=b; min:=a end;
If c>max then begin mid:=max; max:=c end
else if c>min then mid:=c else begin mid:=min; min:=c end;
For i:=1 to min do
begin
h:=h+3;
m[h-2]:=y[i];
m[h-1]:=z[i];
m[h]:=u[i] ;
end;
For i:=min+1 to mid do
begin
if a>min then begin h:=h+1; m[h]:=y[i] end;
if b>min then begin h:=h+1; m[h]:=z[i] end;
if c>min then begin h:=h+1; m[h]:=u[i] end
end;
For i:=mid+1 to max do
begin
if a>mid then begin h:=h+1; m[h]:=y[i] end;
if b>mid then begin h:=h+1; m[h]:=z[i] end;
if c>mid then begin h:=h+1; m[h]:=u[i] end
end;
For i:=1 to h do
writeln(m[i])
end.

Ճի՞շտ եմ գրել: Մենակ թե, ես գրել եմ առանց ֆայլերի: Կարծում եմ, քո մոտ պրոբլեմը դրանում չի եղել, եթե ֆալյերը գիտես, ապա էսքանից հետո ֆայլերով "կարդալն" ու "արտածելը" պրոբլեմ չի լինի: Եթե ուզում ես, կարող եմ փորձել ֆայլերով գրել, եթե իհարկե խնդիրը ճիշտ եմ հասկացել ու ճիշտ եմ լուծել:

n1djhayko
10.04.2011, 17:58
var x,y,z,u,m:array[1..100] of integer;
a,b,c,min,mid,max,h,i,n:integer;
begin read(n);
a:=0; b:=0; c:=0; min:=0; mid:=0; max:=0; h:=0;
For i:=1 to n do read(x[i]);
For i:=1 to n do
if x[i]<0 then begin a:=a+1; y[a]:=x[i] end
else if x[i]=0 then begin b:=b+1; z[b]:=x[i] end
else begin c:=c+1; u[c]:=x[i] end;
If a>b then begin max:=a; min:=b end
else begin max:=b; min:=a end;
If c>max then begin mid:=max; max:=c end
else if c>min then mid:=c else begin mid:=min; min:=c end;
For i:=1 to min do
begin
h:=h+3;
m[h-2]:=y[i];
m[h-1]:=z[i];
m[h]:=u[i] ;
end;
For i:=min+1 to mid do
begin
if a>min then begin h:=h+1; m[h]:=y[i] end;
if b>min then begin h:=h+1; m[h]:=z[i] end;
if c>min then begin h:=h+1; m[h]:=u[i] end
end;
For i:=mid+1 to max do
begin
if a>mid then begin h:=h+1; m[h]:=y[i] end;
if b>mid then begin h:=h+1; m[h]:=z[i] end;
if c>mid then begin h:=h+1; m[h]:=u[i] end
end;
For i:=1 to h do
writeln(m[i])
end.

Ճի՞շտ եմ գրել: Մենակ թե, ես գրել եմ առանց ֆայլերի: Կարծում եմ, քո մոտ պրոբլեմը դրանում չի եղել, եթե ֆալյերը գիտես, ապա էսքանից հետո ֆայլերով "կարդալն" ու "արտածելը" պրոբլեմ չի լինի: Եթե ուզում ես, կարող եմ փորձել ֆայլերով գրել, եթե իհարկե խնդիրը ճիշտ եմ հասկացել ու ճիշտ եմ լուծել:


Ոնցվոր թե սաղ նորմալա

armen9494
10.04.2011, 19:02
Ոնցվոր թե սաղ նորմալա

Բայց առաջինը շատ դժվար ա, չնայած մոտավորապես պատկերացնում եմ, որ ուղղությամբ պետք ա մտածել, բայց դժվար թե ընդեղ հասցնեի: Ընդհանուր քանի՞ հատ էին: Որ խնդրեմ, կարա՞ս երկրորդն էլ գրես: Ուղղակի ինձ հետաքրքիր ա:

n1djhayko
10.04.2011, 19:21
Հիմա չէ ,բայց վաղը կգրեմ

armen9494
10.04.2011, 19:25
Հիմա չէ ,բայց վաղը կգրեմ

Եղավ, նախապես շնորհակալություն: Էն առաջին խնդրի շուրջ հլը կփորձեմ մտածել, շատ հետաքրքիր էր ու բարդ:

n1djhayko
10.04.2011, 19:31
Եղավ, նախապես շնորհակալություն: Էն առաջին խնդրի շուրջ հլը կփորձեմ մտածել, շատ հետաքրքիր էր ու բարդ:
Խնդրեմ

armen9494
12.04.2011, 11:29
Հիմա չէ ,բայց վաղը կգրեմ

Լավ, սպասում եմ:)

armen9494
12.04.2011, 11:29
Ասեմ, որ առաջին խնդրի ալգորիթմը մտածել եմ, եթե հետաքրքիրա, կարամ գրեմ:

soultaker
15.04.2011, 23:26
Առաջին խնդրի սենց տարբերակ կարամ առաջարկեմ. սյուների շառավիղները մեծացնում ենք սեղանի շառավղի չափով, ու դրա փոխարեն սեղանը դիտարկում ենք որպես նյութական կետ: Խնդիրը ոնց որ հեշտանումա դրանից հետո: Ենթադրենք տրվածա ինչ-որ r շառավիղ, ու ստուգենք կանցնի տենց սեղանը թե չէ: Սկզբում էտ r-ը գումարում ենք սյուների շառավիղներին, իսկ ստուգելը անցնումա թե չէ, հետևյալ կերպ` պետքա լինում գտնել, թե կա արդյոք սյուների հաջորդականություն, այնպիսին, որ առաջինը հատվումա ձախ պատի հետ, վերջինը` աջ, ու բացի դրանից յուրաքանչյուրը հատվումա իրա նախորդ սյան հետ: Այսինքն կա արդյոք սյուների շղթա, որ մի պատից մյուսնա գնում: Եթե կա, ուրեմն տվյալ շառավղով սեղանը չի անցնի: Երբ որ արդեն էսքանը ունենք, մնումա երկուական փնտրումով գտնել առավելագույն r-ը:

soultaker
16.04.2011, 00:21
Էս էլ ծրագիրը վերը բերված ալգորիթմի (փաստորեն ճիշտ էր, էտ սայտում սաղ տեստերն անցավ :) )

#include <iostream>
using namespace std;

const double eps = 1e-6;

int x_left, x_right;
int colon_r;
int n;
int cx[205], cy[205];
bool vis[205];

bool cross(int i1, int i2, double max_dist)
{
double dx = cx[i1] - cx[i2];
double dy = cy[i1] - cy[i2];
return dx * dx + dy * dy + eps < max_dist * max_dist;
}

void rec(int nom, double r)
{
vis[nom] = true;
int i;
for(i=0; i<n; i++)
{
if(i == nom)
{
continue;
}
if(!vis[i] && cross(nom, i, 2 * colon_r + r))
{
rec(i, r);
}
}
}

bool can_pass(double r)
{
// memset(vis, 0, sizeof(vis));
int i;
for(i=0; i<n; i++)
{
vis[i] = 0;
}

for(i=0; i<n; i++)
{
if(cx[i] - colon_r - r - eps < x_left)
{
rec(i, r);
}
}
for(i=0; i<n; i++)
{
// cout << vis[i] << endl;
if(vis[i] && cx[i] + colon_r + r + eps > x_right)
{
return false;
}
}
return true;
}

int main()
{
cin >> x_left >> x_right;
cin >> colon_r;
cin >> n;
int i;
for(i=0; i<n; i++)
{
cin >> cx[i];
cin >> cy[i];
}

// cout << can_pass(46.0) << endl;
// return 0;

double r_st = 0.0;
double r_end = 3000000.0;
double ans = 0.0;
while(r_st + eps < r_end)
{
double r = (r_st + r_end) / 2;
if(can_pass(r))
{
ans = r;
r_st = r;
}
else
{
r_end = r;
}
}
cout << ans << endl;
return 0;
}

armen9494
16.04.2011, 09:12
Առաջին խնդրի սենց տարբերակ կարամ առաջարկեմ. սյուների շառավիղները մեծացնում ենք սեղանի շառավղի չափով, ու դրա փոխարեն սեղանը դիտարկում ենք որպես նյութական կետ: Խնդիրը ոնց որ հեշտանումա դրանից հետո: Ենթադրենք տրվածա ինչ-որ r շառավիղ, ու ստուգենք կանցնի տենց սեղանը թե չէ: Սկզբում էտ r-ը գումարում ենք սյուների շառավիղներին, իսկ ստուգելը անցնումա թե չէ, հետևյալ կերպ` պետքա լինում գտնել, թե կա արդյոք սյուների հաջորդականություն, այնպիսին, որ առաջինը հատվումա ձախ պատի հետ, վերջինը` աջ, ու բացի դրանից յուրաքանչյուրը հատվումա իրա նախորդ սյան հետ: Այսինքն կա արդյոք սյուների շղթա, որ մի պատից մյուսնա գնում: Եթե կա, ուրեմն տվյալ շառավղով սեղանը չի անցնի: Երբ որ արդեն էսքանը ունենք, մնումա երկուական փնտրումով գտնել առավելագույն r-ը:

Չէ, ես հլը որ հեռու եմ սենց բաներից: Իսկ եթե գաղտնիք չի, դու որ կուրս ես?

soultaker
16.04.2011, 14:30
Ես 4-րդ կուրս եմ, բայց խնդրի լուծման ալգորիթմը հասկանալու համար շատ բան պետք չի իմանալ, երկուական փնտրում ու DFS(Depth First Search)-ը հերիք են: Դրանք երկուսն էլ պարզ բաներ են, առանց ուրիշ բաներ իմանալու դրանք կարելիա մի կես ժամում շատ հանգիստ սովորել, թեկուզ wikipedia-ից:

armen9494
16.04.2011, 21:26
Ես 4-րդ կուրս եմ, բայց խնդրի լուծման ալգորիթմը հասկանալու համար շատ բան պետք չի իմանալ, երկուական փնտրում ու DFS(Depth First Search)-ը հերիք են: Դրանք երկուսն էլ պարզ բաներ են, առանց ուրիշ բաներ իմանալու դրանք կարելիա մի կես ժամում շատ հանգիստ սովորել, թեկուզ wikipedia-ից:

Իսկ դու օլիպիադային մասնակցե՞լ ես:

soultaker
16.04.2011, 22:14
Եթե խոսքը հենց էս թեմայի օլիմպիադայի մասինա, ես պոլիտեխնիկից չեմ :)