Чемпионат
Чемпионат VK Cup — это открытый чемпионат по программированию, проводимый компанией ВКонтакте, проектом Codeforces и Саратовским государственным университетом. Финал чемпионата пройдет в июле в Санкт-Петербурге. Лучшие 50 участников по результатам третьего отборочного раунда будут приглашены на финал соревнования. Расходы по проезду и проживанию берут на себя организаторы чемпионата.
Участники
Вы молоды и любите решать задачи по программированию? Этот чемпионат для вас! Участником чемпионата может стать любой желающий, кто удовлетворяет следующим требованиям:
Таким образом, чемпионат преимущественно ориентирован на школьников старших классов и студентов.
Соревнование индивидуальное, участие в какой-либо коллективной форме не допускается.
Как участвовать
Будьте готовы решать интересные алгоритмические задачи. Вам будут предложены следующие языки программирования:
Так как современные языки очень сильно различаются по производительности, жюри не гарантирует существование решения на всех языках из списка.
Структура чемпионата
VK Cup 2012 Квалификационный раунд 1
Первый квалификационный раунд проводился 4 марта. На решение задач были даны сутки. С ними (и решением некоторых) можете ознакомится ниже. Схема проверки была приблизительно такой: у Вас была возможность посылать решение на одном из представленных языков в неограниченном количестве, но с определенным штрафом за неправильный вариант. Решение проходит 2 проверки:
- претест (вовремя соревнования)
- тест (после соревнования, до оглашения результатов)
если в первом случае решение можно перепослать (за что, естественно, у вас снимут баллы), то во втором случае сделать уже ничего нельзя.
A. Следующий раунд
Условие
B. Такси
Условие
C. Команды cd и pwd
Условие
D. Ледяные скульптуры
Условие
E. Телефонные разговоры
Условие
Желающие принять участие могут пройти Квалификационный раунд 2 9 марта.
Источник: http://codeforces.ru/vkcup2012
Чемпионат VK Cup — это открытый чемпионат по программированию, проводимый компанией ВКонтакте, проектом Codeforces и Саратовским государственным университетом. Финал чемпионата пройдет в июле в Санкт-Петербурге. Лучшие 50 участников по результатам третьего отборочного раунда будут приглашены на финал соревнования. Расходы по проезду и проживанию берут на себя организаторы чемпионата.
Участники
Вы молоды и любите решать задачи по программированию? Этот чемпионат для вас! Участником чемпионата может стать любой желающий, кто удовлетворяет следующим требованиям:
- возраст не менее 14 и не более 23 полных лет на момент регистрации;
- не является сотрудником компании ВКонтакте и/или членом оргкомитета или жюри чемпионата;
- не является дисквалифицированным членом сообщества Codeforces.
Таким образом, чемпионат преимущественно ориентирован на школьников старших классов и студентов.
Соревнование индивидуальное, участие в какой-либо коллективной форме не допускается.
Как участвовать
Будьте готовы решать интересные алгоритмические задачи. Вам будут предложены следующие языки программирования:
- С/С++
- Delphi/Pascal
- Java
- С#
- Python
- Ruby
- PHP
- OCaml
- Haskell
- Perl
- Scala
Так как современные языки очень сильно различаются по производительности, жюри не гарантирует существование решения на всех языках из списка.
Структура чемпионата
VK Cup 2012 Квалификационный раунд 1
Первый квалификационный раунд проводился 4 марта. На решение задач были даны сутки. С ними (и решением некоторых) можете ознакомится ниже. Схема проверки была приблизительно такой: у Вас была возможность посылать решение на одном из представленных языков в неограниченном количестве, но с определенным штрафом за неправильный вариант. Решение проходит 2 проверки:
- претест (вовремя соревнования)
- тест (после соревнования, до оглашения результатов)
если в первом случае решение можно перепослать (за что, естественно, у вас снимут баллы), то во втором случае сделать уже ничего нельзя.
A. Следующий раунд
Условие
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes;
var i,k,n,h:integer;
sSLT, sSLP: TStringList;
sT, sP: string;
begin
readln(sP);
sSLP:=TStringList.Create;
sSLP.Delimiter:=' ';
sSLP.DelimitedText:=sP;
n:=strtoint(sSLP[0]);
k:=strtoint(sSLP[1]);
if (1<=k) and (k<=n) and (n<=50) then begin
readln(sT);
h:=k-1;
sSLT:=TStringList.Create;
sSLT.Delimiter:=' ';
sSLT.DelimitedText:=sT;
if strtoint(sSLT[h]) > 0 then begin
for i:=0 to sSLT.Count-1 do
if (sSLT[i]=sSLT[h]) and (i>h) then k:=k+1;
end else begin
k:=0;
for i:=h downto 0 do
if (strtoint(sSLT[i])>0) then k:=k+1;
end;
writeln(k);
readln(n);
end;
end.
B. Такси
Условие
Код:
program Project2;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes,
Math;
var s:string;
k,i,j,h:integer;
sSL:TStringList;
begin
readln(k);
readln(s);
if (1<=k) and (k<=IntPower(10, 5)) then begin
sSL:=TStringList.Create;
sSL.Delimiter:=' ';
sSL.DelimitedText:=s;
h:=0;
for i:=0 to sSL.Count-1 do begin
for j:=0 to sSL.Count-1 do begin
if (strtoint(sSL[i])+strtoint(sSL[j]) <= 4) and (i<>j) then begin
sSL[i]:=floattostr(strtoint(sSL[i])+strtoint(sSL[j]));
sSL[j]:='0';
end;
end;
if strtoint(sSL[i]) = 4 then begin
sSL[i]:='0';
h:=h+1;
end;
end;
end;
for i:=0 to sSL.Count-1 do begin
if strtoint(sSL[i]) > 0 then h:=h+1;
end;
writeln(h);
readln(k);
end.
C. Команды cd и pwd
Условие
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes;
var n,i,j,x:integer;
sPath,s:string;
sSL1,sSL2,sSL3:TStringList;
a: array[1..50] of string;
begin
readln(n);
if (1<=n) and (n<=50) then begin
for i:=1 to n do
readln(a[i]);
sPath:='/';
for i:=1 to n do begin
sSL1:=TStringList.Create;
sSL1.Delimiter:=' ';
sSL1.DelimitedText:=a[i];
if sSL1[0] = 'cd' then begin
s:=sSL1[1];
if s[1] = '/' then begin
sSL2:=TStringList.Create;
sSL2.Delimiter:='/';
sSL2.DelimitedText:=s;
sPath:='/';
for j:=0 to sSL2.Count-1 do begin
if sSL2[j] <> '..' then begin
if sPath = '/' then sPath:=sPath+sSL2[j]
else sPath:=sPath+'/'+sSL2[j];
end else begin {}
if (sPath <> '/') then begin
sSL3:=TStringList.Create;
sSL3.Delimiter:='/';
sSL3.DelimitedText:=sPath;
if (length(sPath)-length(sSL3[sSL3.Count-1])-1) > 0 then
sPath:=Copy(sPath, 1, length(sPath)-length(sSL3[sSL3.Count-1])-1)
else
sPath:=Copy(sPath, 1, length(sPath)-length(sSL3[sSL3.Count-1]));
sSL3.Free;
end else
sPath:='/';
end; {}
end;
sSL2.Free
end else begin
sSL2:=TStringList.Create;
sSL2.Delimiter:='/';
sSL2.DelimitedText:=s;
for j:=0 to sSL2.Count-1 do begin
if (sSL2[j] = '..') then begin
if (sPath <> '/') then begin
sSL3:=TStringList.Create;
sSL3.Delimiter:='/';
sSL3.DelimitedText:=sPath;
if (length(sPath)-length(sSL3[sSL3.Count-1])-1) > 0 then
sPath:=Copy(sPath, 1, length(sPath)-length(sSL3[sSL3.Count-1])-1)
else
sPath:=Copy(sPath, 1, length(sPath)-length(sSL3[sSL3.Count-1]));
sSL3.Free;
end else
sPath:='/';
end else
if sPath = '/' then
sPath:=sPath+sSL2[j]
else
sPath:=sPath+'/'+sSL2[j];
end;
sSL2.Free;
end;
end;
if sSL1[0] = 'pwd' then begin
if sPath[length(sPath)] = '/' then
writeln(sPath)
else
writeln(sPath+'/');
end;
sSL1.Free;
end;
end;
readln(x);
end.
D. Ледяные скульптуры
Условие
Код:
program Project1;
{$APPTYPE CONSOLE}
uses
SysUtils,
Classes;
var n,i,j,k:integer;
max:integer;
s:string;
sSL1:TStringList;
a:array[1..20000] of integer;
begin
readln(n);
if (3<=n) and (n<=20000) then begin
readln(s);
sSL1:=TStringList.Create;
sSL1.Delimiter:=' ';
sSL1.DelimitedText:=s;
max:=0;
if (n=3) or (n=4) then begin
for i:=0 to sSL1.Count-1 do
max:=max+strtoint(sSL1[i]);
end else begin
k:=1;
for i:=1 to n do begin
j:=1;
while (j<=n) do begin
a[k]:=a[k]+strtoint(sSL1[j-1]);
j:=j+i;
end;
k:=k+1;
end;
i:=2;
while (i<=n) do begin
j:=i;
while (j<=n) do begin
a[k]:=a[k]+strtoint(sSL1[j-1]);
j:=j+i;
end;
k:=k+1;
i:=i+1;
end;
max:=a[1];
for i:=1 to 20000 do begin
if a[i] > max then
max:=a[i];
end;
end;
writeln(max);
end;
end.
E. Телефонные разговоры
Условие
Желающие принять участие могут пройти Квалификационный раунд 2 9 марта.
Источник: http://codeforces.ru/vkcup2012