Сайт підготовки до олімпіади з інформатики

програмування в С++

Школа олімпійського резерву з інформатики
Готуємось до олімпіади 2015-2 PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:08

Готуємось до олімпіади 2
З цифр числа утворити найбільше число
З цифр числа утворити найменше
Чотирицифрові числа які складаються з різних цифр, і добуток крайніх рівний.
В введеному масиві знайти найдовшу підпослідовність з однакових чисел, вивести його довжину.
В введеному масиві вивести довжину найдовшої підпослідовності з однакових цифр.
Перевірити чи матриця є «Судоку»
N відрізків на осі x задані координатами початку і кінця визначити довжину яку вони покривають.
Прямокутники зі сторонами паралельними осям координат задано координатами протилежних вершин визначити площу яку покривають прямокутники.
Коло з центром в початку координат задано радіусом визначити кількість точок з цілочисельними координатами, які лежать всередині.
Відрізок заданий координати початку і кінця визначити кількість точок з цілими координатами, які лежать на відрізку.
Трикутник заданий координатами вершин, перевірити чи точка належить трикутнику.
Ліві потворити
Визначити точку перетину відрізків.

 
Готуємось до олімпіади 2015-1 PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:06

Готуємось до олімпіади 2015-1
1. Одна чверть
Дві точки на площині, що не лежать на координатних осях, задані своїми координатами: А(Х1, Y1) і B(X2, Y2). Перевірити, чи лежать ці точки в одній координатній чверті.
2. Кількість днів між датами (http://www.e-olymp.com/uk/problems/147)
Дано дві календарні дати. Визначити кількість днів між цими датами. Не забудьте, що високосним вважається рік, номер якого кратний чотирьом та не кратний 100, або кратний 400.
В першому і другому рядку вхідного файлу записано по одній календарній даті у форматі D M Y ( день місяць рік). 1 ≤ D ≤ 31, 1 ≤ M ≤ 12,1 ≤ Y ≤ 2100. У вихідний файл потрібно записати одне число – кількість днів між датами
Наприклад,
1 12 2008 31 12 2008 31
3. Чотиризначні числа
Знайти всі чотиризначні числа, кожне з яких записано різними цифрами і має наступні властивості: якщо цифри шуканого числа деяким чином переставити місцями і одержане таким способом нове чотиризначне число відняти від шуканого, то різницею буде чотиризначне число, записане тими ж цифрами. Вказати кількість таких чисел.
4. Заміна нулів
Дано лінійну таблицю заданої довжини N, яка містить велику кількість нульових елементів. Скласти на алгоритмічній мові алгоритм, що заміняє кожну групу нулів, що йдуть підряд на:
а) один нульовий елемент, якщо число таких нулів не парне;
б) два нульових елементи, якщо число таких нулів парне.
5. Зафарбовані відрізки
На прямій зафарбували N відрізків. Відомі L(і), R(і) – ліві і праві кінці відрізків. Знайти суму довжин усіх зафарбованих частин прямої.
6. Заповнення по діагоналях
Скласти алгоритм заповнення двомірної таблиці A[1:n,1:n] по діагоналях з північного сходу на південний захід числами 1, 2, ..., n2, починаючи з північно–західного кута таблиці.
7. Визначення сторінок (В.О.Бардадим, В.В.Бондаренко)
При друкуванні великих документів може виникнути потреба друкувати не весь документ, а тільки деякі його сторінки. Серед аргументів програми друку є рядок з послідовністю номерів сторінок. Потрібно надрукувати не окремі сторінки, а діапазони сторінок і, можливо, вказувати початок і кінець діапазонів, а не послідовні числа.
Завдання: Напишіть програму, яка буде перетворювати списки сторінок у відповідну послідовність номерів сторінок.
Вхідні дані: Вхідний файл PRІNT.DAT містить один рядок, який має таку структуру: сторінка–1, сторінка–2, сторінка-3, ..., сторінка – N.
Сторінка – і – або номер сторінки, або діапазон у вигляді початок–кінець (початок <= кінець).
Сторінки та діапазони перераховані в зростаючому порядку і не перетинаються. Діапазон включає початкову та кінцеву сторінки. Номери сторінок – числа від 1 до 1000000. 1 <= N <= 1000000.
Вихідні дані: Результат треба вивести до файлу PRІNT.SOL у вигляді сторінка-1, сторінка-2, сторінка-3,..., сторінка – М без пропусків.
Технічні вимоги: Ваша програма повинна мати назву PRІNT.*, де розширення залежить від мови програмування.
Приклад:
PRІNT.DAT
1,4-5,7-7,10-20
PRІNT.SOL
1,4,5,7,10,11,12,13,14,15,16,17,18,19,20
8. Мікроорганізми (М.З.Грузман)
Для обробки фотознімків мікроорганізмів, виконаних під мікроскопом, кожну фотографію розділено на дрібні клітинки. В кожній клітинці, яка повністю накрита одним з мікроорганізмів, або в якій міститься частина мікроорганізму, зроблено позначку.
Вважається, що дві клітинки з позначками належать одному й тому ж мікроорганізмові, якщо з однієї з них можна потрапити в іншу, рухаючись по клітинках з позначкою ліворуч, праворуч, вгору або вниз.
Дано: прямокутне фото розміром m x n клітинок, частину яких позначено.
Отримати: кількість організмів на фотознімку.

* * *
* * * * * * * *
* *
* * *
* * *
* * * * * * *
Технічні вимоги: Введення розмірів m та n на фотознімку здійснюється з клавіатури за запитом програми. Саме фото у закодованому вигляді міститься у файлі PHOTO.DAT. Кожному рядку клітинок відповідає запис у файлі. Позначеній клітинці відповідає символ "*", а непозначеній – "0" (нуль).
Приклад. Фотознімок 6 х 10 має вигляд, зображений на рисунку. На цьому знімкові 4 мікроорганізми.


9. Дужки
Проаналізувати заданий текст з метою виявлення помилок у використанні дужок. Можливі три типи помилок:
а) невідповідність дужок ( і ) по кількості;
б) закриваюча дужка розміщена раніше відкриваючої;
в) відсутній зміст між дужками.
Результатом роботи програми повинно бути повідомлення про типи допущених помилок та їх місце в тексті (якщо це можливо).
10. Греко–латинський квадрат

1 2 3 4
4 3 2 1
2 1 4 3
3 4 1 2
Греко–латинським квадратом називається квадрат N x N, в кожному рядку, в кожному стовпці і в кожній діагоналі якого містяться всі цілі числа від 1 до N. Приклад такого квадрата 4 х 4.
Написати програму, яка:
будує хоча б один квадрат порядку N;
будує всі квадрати порядку N;
будує всі квадрати порядку N так, що не можна отримати один з іншого при допомозі поворотів і обертань навколо осей симетрії.

 
Базові структури алгоритмів PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:05

Базові структури алгоритмів (структура циклу)
1. Прості числа
http://www.e-olymp.com/uk/problems/830
Вивести всі прості числа від M до N включно.
Вхідні дані
У першому рядку знаходяться відокремлені пропуском M і N (2 ≤ M ≤ N ≤ 300 000).
Вихідні дані
Вивести числа у порядку зростання, по одному у рядку. Якщо між M і N включно немає простих - вивести "Absent" (без лапок).
Вхідні дані
Sample 1
2 5
Sample 2
4 4
Вихідні дані
Sample 1
2
3
5
Sample 2
Absent

2. Решето Ератосфена
http://www.e-olymp.com/en/problems/4739
За введеним числам A і B вивести всі прості числа в інтервалі від A до B включно.
Вхідні дані
У єдиному рядку вводяться два числа 1 ≤ A≤ B≤ 100000.
Вихідні дані
Вивести в один рядок всі прості числа в інтервалі від A до B включно.
Input example
Sample 1
2 2
Sample 2
1 100
Output example
Sample 1
2
Sample 2
3 5 7 11 13 17 19 23 29 31 37 41 43 47 53 59 61 67 71 73 79 83 89 97

3.Codeforces (http://codeforces.com/)
http://codeforces.com/problemset/problem/550/A
Два підрядки
Дано рядок s. Потрібно визначити, чи існують в цьому рядку s два непересічні підрядка "AB" і "BA" (ланцюжки можуть йти в будь-якому порядку).
Вхідні дані
На вхід подається рядок s довжиною від 1 до 105 символів, що складається з великих літер латинського алфавіту.
Вихідні дані
Виведіть "YES" (без лапок), якщо рядок s містить дві непересічні підрядка "AB" і "BA", і "NO" інакше.
приклади тестів
вхідні дані
ABA
вихідні дані
NO
вхідні дані
BACFAB
вихідні дані
YES
вхідні дані
AXBYBXA
вихідні дані
NO
Примітка
У першому прикладі вхідних даних, незважаючи на те, що є підрядка "AB" і "BA", їх входження перетинаються, тому відповідь - "NO".

У другому прикладі вхідних даних є наступні входження подстрок: BACFAB.

У третьому прикладі немає ні підрядка "AB", ні підрядка "BA".

 
Заняття 21.10.2015 PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:06

1 тур Волинської учнівської оілмпіади з програмування
Задача 1. Число з однакових цифр
Нехай в калькулятор введемо деяке натуральне число N. Натиснемо клавішу +. Ваше завдання: отримати на екрані число яке складається з однакових цифр. Для цього можна виконувати тільки одну дію: натискувати клавішу = (можливо і 0 раз). Після першого натискування отримаємо результат N+N, після наступного натискування результат збільшується на N. Потрібно визначити, чи можна виконати це завдання. Якщо можна, то визначити перше число яке складається з однакових цифр. Кількість цифр які може відображати калькулятор вважати необмеженою.


#include "fstream"
using namespace std;

ifstream cin("input.txt");
ofstream cout("output.txt");

int main()
{long long n,i,b,c,k,j,t;
cin>>n;
long long f=0,s=0;
int x[1000];
while(f==0 && s<=10000000){
s=s+n;
t=s;i=0;
while(t>0){
i++;
x[i]=t%10;
t=t/10;
}
b=0;
//for(j=1; j<=i; j++)cout<<x[j]<<" ";cout<<endl;
for(j=1; j<i; j++){
if(x[j]!=x[j+1])b=1;
}
if(b==0){
f=1;
c=x[1]; k=i;}

}
if (f==1) cout<<c<<" "<<k<<endl;
else cout<<"Impossible"<<endl;
return 0;
} #include <fstream>
using namespace std;
int main()
{
ifstream cin("input.txt");
ofstream cout("output.txt");
unsigned long long s,n,temp;
long i1,c1,c2,k; int f=0;
cin>>n;
s=n;
do
{f=0;
temp=s;
c2=temp%10;
k=0;
while (temp>0 && f==0)
{c1=temp%10;
k++;
//cout<<c1<<" "<<k<<endl;
if(c1!=c2)f=1;
temp=temp/10;
c2=c1;
}
if (f==0) f=2;
s=s+n;
}
while (f!=2 && s<1000000000);
if (f==2) cout<<c1<<" "<<k<<endl;
else cout<< "Impossible"<<endl;
return 0;
}
#include <fstream>
#include <math.h>
using namespace std;
int main()
{
ifstream cin("input.txt");
ofstream cout("output.txt");

unsigned long long s[10],n,temp;
long i,c,k;
int f=0;
cin>>n;
k=0;
for (i=1;i<=9;i++)s[i]=0;
while (f==0 && s[9]<17446744073709551615)
{

for (i=1;i<=9;i++)
{
s[i]=s[i]*10+i;
if (s[i]%n==0){f=1;c=i;break;}
// cout<<s[i]<<"------------"<<i<<"---"<<k<<endl;
}
k++;
}
if (f==1) cout<<c<<" "<<k<<endl;
else cout<< "Impossible"<<endl;
return 0;
} #include "fstream"
using namespace std;
ifstream cin("input.txt");
ofstream cout("output.txt");
int a[10][2001], f, n, i,k, x, y, j,st;
int main()
{
cin>>n;
f=0,i=0;
while(f==0 && i<=1000)
{
i++;
for(j=1; j<=9; j++)
{ a[j][i]=j;
st=0;
for(k=1;k<=i;k++)st=(st*10+a[j][k])%n;
if(st==0){x=a[j][1]; y=i;f=1;break;}
}
}
if (f==1)
cout<<x<<" "<<y<<endl;
else cout<<"Impossible"<<endl;
return 0;
}

Задача 2. I-й шлях у таблиці
Задано таблицю N*M, у кожній клітинці якої написана одна рядкова буква англійського алфавіту. Розглянемо всі можливі шляхи від лівого верхнього кутка до правого нижнього кутка, якщо вам дозволено йти тільки вправо і вниз. Конкатенація букв у процесі руху утворює рядок. Будемо вважати, що цей рядок – значення шляху. Тепер розглянемо всі такі шляхи і відсортуємо їх значення в алфавітному порядку. Ваше завдання: знайти значення I-го шляху в цьому відсортованому списку.


void p(int k,int i0,int j0)
{int x,y;
c[k]=a[i0][j0];

if(i0==n-1 && j0==m-1){


if(ii==nomer-1){
for(int i=0;i<n+m-1;i++){cout<<c[i];}
cout<<endl;
}

ii++;
}

else
{
if(i0<n-1)p(k+1,i0+1,j0);
if(j0<m-1 )p(k+1,i0,j0+1);

}


Завдання 1 туру NetOI-2015 (16.10-11.11) 2015 р.


Розв'язки приймаються до
 0 годин 12 листопада 2015 р.

 
Дерево PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:05

Теорія графів
Дерево?
Неорієнтовний граф без петель та кратних ребер задано матрицею суміжності. Визначити, чи є цей граф деревом.
Вхідні дані
Перший рядок містить кількість вершин графа n (1 ≤ n ≤ 100). Далі записана матриця суміжності розміром n×n, у якій 1 позначає наявність ребра, 0 - його відсутність. Матриця симетрична відносно головної діагоналі.
Вихідні дані
Виведіть повідомлення YES, якщо граф є деревом, і NO у протилежному випадку.

Вхідні дані
3
0 1 0
1 0 1
0 1 0
Вихідні дані
YES


http://www.e-olymp.com/uk/problems/977

Остове дерево мінімальної ваги
Король країни Аріїв завоював N міст на території сусідніх держав. Тепер йому необхідно створити систему збирання мита з завойованих територій. Він хоче збудувати таку систему шляхів між цими містами, щоб до будь-якого міста можна було дістатися (можливо, через інші міста) зі столиці, але у воєнному стані на транспорт виділяється дуже незначна частина фінансів, тому сумарна вартість побудованих шляхів сполучення між містами має бути мінімальною.
Input format
Перший рядок вхідного файлу містить натуральне число N (1≤N≤100) – кількість міст у країні, а також цілі числа X та Y – координати столиці. Наступні N рядків містять через проміжок координати Xi , Yi завойованих міст. Значення координат по модулю менші 50000.
Output format
Єдиний рядок має містити дійсне число з трьома знаками після коми – сумарну вартість побудованих доріг. Вважайте, що вартість одиниці довжини дороги дорівнює одній умовній одиниці.
Examples

Input in input.txt Output in output.txt
6 0 0
1 1
-1 1
0 2
1 -1
-1 -1
0 -2 8.485

http://134.249.159.199/cgi-bin/new-client?contest_id=24 Задача I

Задачі
AДерево? - http://www.e-olymp.com/uk/problems/977
BОтримай дерево - http://www.e-olymp.com/uk/problems/978
CСума - http://www.e-olymp.com/uk/problems/2157
DПеревірка на неорієнтовність - http://www.e-olymp.com/uk/problems/2470
EВід матриці суміжності до списку ребер - http://www.e-olymp.com/uk/problems/2471
FОперації на графі http://www.e-olymp.com/uk/problems/2472
GДерево - http://www.e-olymp.com/uk/problems/2923
HВід матриці суміжності до списків суміжності - http://www.e-olymp.com/uk/problems/3981
IПоверни мене! - http://www.e-olymp.com/uk/problems/4854

 
Заняття 07.10.2015 PDF Печать E-mail
Добавил(а) Administrator   
15.01.16 21:03

Турнір Базові структури алгоритмів http://134.249.159.199/cgi-bin/new-client?contest_id=23
Логін school1-school10. Пароль 1.
Зауваження.

Структура програми

#include "iostream"
#include <math.h>
using namespace std;
int main()
{
int a,b;
double c;
cin>>a>>b;
c=a/b;
cout.precision(2);
cout<<fixed<<c<<endl;
} Заокруглення
double r;
cout.precision(2);
cout<<fixed<<r<<endl;


Робота з файлами

#include "fstream"
using namespace std;

ifstream cin("input.txt");
ofstream cout("output.txt");

Турнір Методика складання алгоритмів http://134.249.159.199/cgi-bin/new-client?contest_id=24
Логін school1-school10. Пароль 1.
Зауваження.
Тематика задач:
Довга арифметика
Системачислення
Сортування, пошук
Перебір
Бінарні дерева
Графи (пошук, жадібні, динамічне)
Обчислювальна геометрія

Всеукраїнськiй олімпіадi з інформатики NetOI-2015 (http://www.olymp.vinnica.ua/


Задача Розв’язок
Задача DEMO_A
         На площині задано координати двох відрізків AB і CD. Знайти спільну частину проекцій цих відрізків на вісь абсцис. 

Вхідні дані 
         Ви вводите з клавіатури 8 цілих чисел - координати точок  A, B, C, D. Кожне число не перевищує за абсолютною величиною 1000. 

Вихідні дані
         Ви виводите на екран одне число - спільну частину проекцій. Якщо спільна частина - порожня множина, вивести -1, якщо це одна точка - вивести 0. 

Приклад вхідних та вихідних даних 
Вхід: 2 2 7 5 3 4 8 1 
Вихід: 4 #include <iostream>

using namespace std;

int main()
{int x1,y1,x2,y2,x3,y3,x4,y4;
cin>>x1>>y1;
cin>>x2>>y2;
cin>>x3>>y3;
cin>>x4>>y4;
int x20=max(x1,x2);
int x10=min(x1,x2);
int x40=max(x3,x4);
int x30=min(x3,x4);

int v=min(x20,x40)-max(x30,x10);
if (v>=0)cout << v << endl; else cout<<-1;
return 0;
}
Задача DEMO_B
          Скільки натуральних чисел виду 2a3b5ca,b,c - невід'ємні цілі числа) належать відрізку [M;N]? 

Вхідні дані
         Ви вводите з клавіатури 2 цілих числа M та N. Кожне з чисел не перевищує за абсолютною величиною 10000.

Вихідні дані 
         Ви виводите на екран одне число - шукану кількість чисел. 

Приклад вхідних та вихідних даних 
Вхід: 10 20 
Вихід: 6 
#include <iostream>
using namespace std;
int main()
{long long int n,m,temp;
int k=0;
cin>>n>>m;
for(int i=n;i<=m;i++)
{
temp=i;
while (temp%2==0) temp=temp/2;
while (temp%3==0) temp=temp/3;
while (temp%5==0) temp=temp/5;
if (temp==1) k++;
}
cout << k << endl;
return 0;
}
Задача DEMO_C
         Дана послідовність N цілих чисел. Знайти найменший додатній елемент цієї послідовності. 

Вхідні дані 
         Ви вводите з клавіатури кількість чисел N та N цілих чисел - елементів цієї послідовності. Число N не перевищує 10000, кожний елемент послідовності не перевищує за абсолютною величиною 1000. 

Вихідні дані 
         Ви виводите на екран одне число - шуканий елемент послідовності. Якщо у послідовності немає додатніх елементів - вивести 0. 

Приклад вхідних та вихідних даних 
Вхід: 7 -4 4 -7 3 0 8 2 
Вихід: 2 
#include <iostream>

using namespace std;

int main()
{long long int n,minn;
int a[100000];
cin>>n;
for(int i=1;i<=n;i++) cin>>a[i];
minn=2000;
for(int i=1;i<=n;i++)
if(a[i]<minn && a[i]>0) minn=a[i];

if(minn==2000) cout << 0 << endl; else cout << minn << endl;
return 0;
}
Задача DEMO_D
         Задано натуральне число N. Знайти найменше та найбільше число, яке складається з тих самих цифр та у такій самій кількості, що і N. 

Вхідні дані 
         Ви вводите з клавіатури число N (1£ N £2000000000). 

Вихідні дані 
         Ви виводите в одному рядку найменше число, а через пропуск - найбільше число. 

Приклад вхідних та вихідних даних 
Вхід: 7051 
Вихід: 1057 7510 
#include <iostream>
#include <string.h>
#include <string>
using namespace std;

int main()
{
char *n=new char[200000000];

cin>>n;
for(int i=0;i<strlen(n)-1;i++)
for(int j=0;j<strlen(n)-1;j++)
if(n[j]>n[j+1])swap(n[j],n[j+1]);
int k=0;
while(n[k]=='0')k++;
swap(n[0],n[k]);
cout << n << " ";
for(int i=0;i<strlen(n)-1;i++)
for(int j=0;j<strlen(n)-1;j++)
if(n[j]<n[j+1])swap(n[j],n[j+1]);
cout << n << endl;
return 0;
}
Задача DEMO_E

         Задано текстовий рядок. Вилучити з нього всі символи, що не є цифрами. Вважається, що рядок містить хоча б одну цифру. 

Вхідні дані 
         Ви вводите з клавіатури заданий рядок, довжина якого не перевищує 255 символів. 

Вихідні дані 
         Ви виводите на екран шуканий рядок. 

Приклад вхідних та вихідних даних 
Вхід: Ф11р88н 
Вихід: 1188 
#include <iostream>
#include <string.h>
#include <string>
using namespace std;

int main()
{
char *n=new char[200000000];

cin>>n;
for(int j=0;j<strlen(n);j++)
if(n[j]>='0'&&n[j]<='9')cout<<n[j];
cout << endl;
return 0;
}
Задача DEMO_F

         Дано K клітин шахової дошки. З'ясувати, чи всі вони одного кольору. 

Вхідні дані 
         Ви вводите з клавіатури кількість контрольних прикладів, потім число К - кількість клітин шахової дошки,а у наступних К рядках - координати клітин (натуральні числа, не більші 8). 

Вихідні дані 
         Ви виводите на екран для кожного приклада 1, якщо всі клітини одного кольору і 0, якщо це не так. 

Приклад вхідних та вихідних даних 

Вхід: 3
 
3  
1 2
8 1
8 5
2  
1 1
1 2
2  
1 1
2 2

Вихід: 101 
#include <iostream>

using namespace std;

int main()
{long long int n,k,f,a,b,black,white;
int r[10000];
cin>>n;
for(int i=1;i<=n;i++){
cin>>k;

white=0;black=0;
for(int j=1;j<=k;j++)
{
cin>>a>>b;
if ((a%2==0 && b%2==0 )|| (a%2==1 && b%2==1 )) black++; else white++;

}
if (white==k || black==k)r[i]=1;else r[i]=0;
}
for(int i=1;i<=n;i++)cout<<r[i];
cout << endl;
return 0;
}

Додатково
ІІ етап Всеукраїнської учнівської олімпіади з інформатики (м.Луцьк) 2014-2015н.р. - http://134.249.159.199/cgi-bin/new-client?contest_id=21
Тренувальний турнір до Всеукраїнської учнівської олімпіади з інформатики (м.Луцьк) 2014-2015н.р. - http://134.249.159.199/cgi-bin/new-client?contest_id=22

 
Заняття 30.09.2015 PDF Печать E-mail
Добавил(а) Administrator   
30.09.15 09:18

1.      Методика складання алгоритмів

Розв’язати і протестувати задачі в системі (http://134.249.159.199/cgi-bin/new-client?contest_id=24)

Логін user1-user10(пароль - 1)

Тематика задач:

$1-          Довга арифметика

$1-          Системачислення

$1-          Сортування, пошук

$1-          Перебір

$1-          Бінарні дерева

$1-          Графи (пошук, жадібні, динамічне)

$1-          Обчислювальна геометрія

2.      Змагання сортування http://www.e-olymp.com/ru/contests/5852

Теорія

Методи сортування:

$11)      Бульбашка

$12)      Вибір максимального (мінімального)

$13)      Швидке

$14)      Вектором

Сортування

Перестановки

#include<iostream>

#include<algorithm>

#include<vector>

using namespace std;

int i,j,n;

int main()

{cin>>n;

vector<int> a(n);

for (int i=0;i<n;i++) cin>>a[i];

sort(a.begin(),a.end());

for (i=0; i<n-1; i++) cout<<a[i]<<" ";

cout<<a[n-1]<<"\n";

 return 0;

}

#include<iostream>

#include<algorithm>

#include<vector>

using namespace std;

vector<int> a;

int n;

int main()

{cin>>n;

for (int i=1;i<=n;i++) a.push_back(i);

for (int i=0; i<n-1; i++) cout<<a[i]<<" ";

cout<<a[n-1]<<"\n";

 while (next_permutation(a.begin(),a.end()))

{for (int i=0;i<n-1;i++)cout << a[i] << " ";

  cout<<a[n-1]<<"\n";

}

 return 0;

}

 
Заняття 23.09.2015 PDF Печать E-mail
Добавил(а) Administrator   
30.09.15 09:16

   Методика складання алгоритмів

Розв’язати і протестувати задачі в системі (http://134.249.159.199/cgi-bin/new-client?contest_id=24)

Логін user1-user10(пароль - 1)

Тематика задач:

$1-          Довга арифметика

$1-          Системачислення

$1-          Сортування, пошук

$1-          Перебір

$1-          Бінарні дерева

$1-          Графи (пошук, жадібні, динамічне)

$1-          Обчислювальна геометрія

 


Страница 8 из 26

Статистика

Пользователей : 152
Статей : 220
Просмотрено статей : 88159

Вход/Регистрация

Нет