/******************************************************************************
Online C++ Compiler.
Code, Compile, Run and Debug C++ program online.
Write your code in this editor and press "Run" button to compile and execute it.
*******************************************************************************/
#include <iostream>
#include <vector>
#include <algorithm>
#include <cmath>
constexpr double EPS = 0.00000001;
struct data{
int C;
double s;
double sC()const {return C*s;}
};
double fsum(const std::vector<data>&v) {
double sum=0;
for(const auto& x:v) sum+=x.sC();
return sum;
}
bool operator < (const data &lf,const data &rh){
return lf.C<rh.C;
}
bool operator == (const data &lf,const data &rh){
return lf.C==rh.C && abs(lf.s-rh.s) < EPS;}
using namespace std;
int main()
{
vector<data> C {{2,0.5},{4,0.25},{8,0.125},{16,0.0625}};
vector<data> C_sub{{2,0.5},{4,0.25}};
vector<data> diff;
//https://stackoverflow.com/questions/27192967/c-get-the-difference-between-two-vectors
std::set_difference(C.begin(), C.end(), C_sub.begin(), C_sub.end(),
std::inserter(diff, diff.begin()));
for(const auto& x:diff) cout<<'{'<<x.C<<','<<x.s<<"}, ";
cout<<'\n'<<endl;
double sum_diff = fsum(diff);
double sum_C_sub = fsum(C_sub);
cout<<((abs(sum_diff-sum_C_sub)<EPS)?"Istnieje":"Nie istnieje")<<endl;
return 0;
}