ENG  RUSTimus Online Judge
Online Judge
Задачи
Авторы
Соревнования
О системе
Часто задаваемые вопросы
Новости сайта
Форум
Ссылки
Архив задач
Отправить на проверку
Состояние проверки
Руководство
Регистрация
Исправить данные
Рейтинг авторов
Текущее соревнование
Расписание
Прошедшие соревнования
Правила
вернуться в форум

Обсуждение задачи 1005. Куча камней

How to find all subsets os set in C++?
Послано Guti Alberto MOSKVA 11 июн 2010 16:24
How to find all subsets os set in C++?
Re: How to find all subsets os set in C++?
Послано Baurzhan 11 июн 2010 19:00
#include<iostream>
#include<cmath>
using namespace std;



int main(){
int n,a[20],delta=1000000000;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
int  s1=0,s2=0;
int t = 1<<n;
for(int i=0;i<t;i++){
    s1=0;
    s2=0;
    for(int j=0;j<n;j++){
        if( ( (1<<j) & (i) ) == 0 ) s1+=a[j];
        else s2+=a[j];
    }
    if(abs(s1-s2) < delta)
    delta = abs(s1-s2);

}
cout<<delta<<endl;
return 0;
}
Re: How to find all subsets os set in C++?
Послано Moonstone 11 июн 2010 21:08
And if you write:
int t = 1 << (n - 1); // instead of 1 << n
it will be 2 times faster :)