// PlayGround.cpp : Defines the entry point for the console application.
//
#include <iostream>
#include <vector>
#include <sstream>
#include <limits>
using namespace std;
class Result
{
public :
void calculate( std:: vector < float > time , std:: vector < float > power, std:: vector < float > price, float MaxP, float MinP) ;
Result( ) = default ;
public :
float MAX_profit = 0.0f ;
float Min_KWh = std:: numeric_limits < float > :: infinity ( ) ;
std:: vector < int > config;
} ;
void Result:: calculate ( std:: vector < float > time , std:: vector < float > power, std:: vector < float > price, float MaxP, float MinP)
{
for ( auto a = 0 ; a < 4 ; a++ )
{
for ( auto b = 0 ; b < 4 ; b++ )
{
for ( auto c = 0 ; c < 4 ; c++ )
{
for ( auto d = 0 ; d < 4 ; d++ )
{
auto money = time [ 0 ] * power[ a] * price[ 0 ] + time [ 1 ] * power[ b] * price[ 1 ] + time [ 2 ] * power[ c] * price[ 2 ] + time [ 3 ] * power[ d] * price[ 3 ] ;
auto p = time [ 0 ] * power[ a] + time [ 1 ] * power[ b] + time [ 2 ] * power[ c] + time [ 3 ] * power[ d] ;
if ( ( money > MAX_profit && p <= MaxP && p >= MinP) || ( abs ( money - MAX_profit) < 0.0001 && p < Min_KWh) )
{
MAX_profit = money;
Min_KWh = p;
config.push_back ( a) ;
config.push_back ( b) ;
config.push_back ( c) ;
config.push_back ( d) ;
}
}
}
}
}
}
int main( )
{
std:: vector < float > time , power, price;
time .reserve ( 4 ) ;
power.reserve ( 4 ) ;
price.reserve ( 4 ) ;
float MaxP, MinP;
Result res;
time .push_back ( 8 ) ;
time .push_back ( 4 ) ;
time .push_back ( 6 ) ;
time .push_back ( 6 ) ;
power.push_back ( 30 ) ;
power.push_back ( 60 ) ;
power.push_back ( 90 ) ;
power.push_back ( 120 ) ;
price.push_back ( 0.1 ) ;
price.push_back ( 0.3 ) ;
price.push_back ( 0.2 ) ;
price.push_back ( 0.4 ) ;
MaxP = 1400 ;
MinP = 1300 ;
res.calculate ( time , power, price, MaxP, MinP) ;
int a;
cout << "Config: " << power[ res.config [ 0 ] ] << " " << power[ res.config [ 1 ] ] << " " << power[ res.config [ 2 ] ] << " " << power[ res.config [ 3 ] ] << endl;
cout << "Profit per time: " << power[ res.config [ 0 ] ] * time [ 0 ] * price[ 0 ] << " " << power[ res.config [ 1 ] ] * time [ 1 ] * price[ 1 ] << " " << power[ res.config [ 2 ] ] * time [ 2 ] * price[ 2 ] << " " << power[ res.config [ 3 ] ] * time [ 3 ] * price[ 3 ] << endl;;
cout << "KWh per time: " << power[ res.config [ 0 ] ] * time [ 0 ] << " " << power[ res.config [ 1 ] ] * time [ 1 ] << " " << power[ res.config [ 2 ] ] * time [ 2 ] << " " << power[ res.config [ 3 ] ] * time [ 3 ] << endl;
cout << "Overall Profit: " << res.MAX_profit << " Total KWh: " << res.Min_KWh << endl;
cin >> a;
return 0 ;
}
Ly8gUGxheUdyb3VuZC5jcHAgOiBEZWZpbmVzIHRoZSBlbnRyeSBwb2ludCBmb3IgdGhlIGNvbnNvbGUgYXBwbGljYXRpb24uCi8vCiNpbmNsdWRlIDxpb3N0cmVhbT4KI2luY2x1ZGUgPHZlY3Rvcj4KI2luY2x1ZGUgPHNzdHJlYW0+CiNpbmNsdWRlIDxsaW1pdHM+Cgp1c2luZyBuYW1lc3BhY2Ugc3RkOwoKY2xhc3MgUmVzdWx0CnsKcHVibGljOgoJdm9pZCBjYWxjdWxhdGUoc3RkOjp2ZWN0b3I8ZmxvYXQ+IHRpbWUsIHN0ZDo6dmVjdG9yPGZsb2F0PiBwb3dlciwgc3RkOjp2ZWN0b3I8ZmxvYXQ+IHByaWNlLCBmbG9hdCBNYXhQLCBmbG9hdCBNaW5QKTsKCVJlc3VsdCgpID0gZGVmYXVsdDsKCnB1YmxpYzoKCWZsb2F0IE1BWF9wcm9maXQgPSAwLjBmOwoJZmxvYXQgTWluX0tXaCA9IHN0ZDo6bnVtZXJpY19saW1pdHM8ZmxvYXQ+OjppbmZpbml0eSgpOwoJc3RkOjp2ZWN0b3I8aW50PiBjb25maWc7Cn07Cgp2b2lkIFJlc3VsdDo6Y2FsY3VsYXRlKHN0ZDo6dmVjdG9yPGZsb2F0PiB0aW1lLCBzdGQ6OnZlY3RvcjxmbG9hdD4gcG93ZXIsIHN0ZDo6dmVjdG9yPGZsb2F0PiBwcmljZSwgZmxvYXQgTWF4UCwgZmxvYXQgTWluUCkKewoJZm9yIChhdXRvIGEgPSAwOyBhIDwgNDsgYSsrKQoJewoJCWZvciAoYXV0byBiID0gMDsgYiA8IDQ7IGIrKykKCQl7CgkJCWZvciAoYXV0byBjID0gMDsgYyA8IDQ7IGMrKykKCQkJewoJCQkJZm9yIChhdXRvIGQgPSAwOyBkIDwgNDsgZCsrKQoJCQkJewoJCQkJCWF1dG8gbW9uZXkgPSB0aW1lWzBdICogcG93ZXJbYV0gKiBwcmljZVswXSArIHRpbWVbMV0gKiBwb3dlcltiXSAqIHByaWNlWzFdICsgdGltZVsyXSAqIHBvd2VyW2NdICogcHJpY2VbMl0gKyB0aW1lWzNdICogcG93ZXJbZF0gKiBwcmljZVszXTsKCQkJCQlhdXRvIHAgPSB0aW1lWzBdICogcG93ZXJbYV0gKyB0aW1lWzFdICogcG93ZXJbYl0gKyB0aW1lWzJdICogcG93ZXJbY10gKyB0aW1lWzNdICogcG93ZXJbZF07CgkJCQkJaWYgKChtb25leSA+IE1BWF9wcm9maXQgJiYgcCA8PSBNYXhQICYmIHAgPj0gTWluUCkgfHwgKGFicyhtb25leSAtIE1BWF9wcm9maXQpIDwgMC4wMDAxICYmIHAgPCBNaW5fS1doKSkKCQkJCQl7CgkJCQkJCU1BWF9wcm9maXQgPSBtb25leTsKCQkJCQkJTWluX0tXaCA9IHA7CgkJCQkJCWNvbmZpZy5wdXNoX2JhY2soYSk7CgkJCQkJCWNvbmZpZy5wdXNoX2JhY2soYik7CgkJCQkJCWNvbmZpZy5wdXNoX2JhY2soYyk7CgkJCQkJCWNvbmZpZy5wdXNoX2JhY2soZCk7CgkJCQkJfQoJCQkJfQoJCQl9CgkJfQoJfQp9CgoKCmludCBtYWluKCkKewoJc3RkOjp2ZWN0b3I8ZmxvYXQ+IHRpbWUsIHBvd2VyLCBwcmljZTsKCXRpbWUucmVzZXJ2ZSg0KTsKCXBvd2VyLnJlc2VydmUoNCk7CglwcmljZS5yZXNlcnZlKDQpOwoJCglmbG9hdCBNYXhQLCBNaW5QOwoJCglSZXN1bHQgcmVzOwoKCXRpbWUucHVzaF9iYWNrKDgpOwoJdGltZS5wdXNoX2JhY2soNCk7Cgl0aW1lLnB1c2hfYmFjayg2KTsKCXRpbWUucHVzaF9iYWNrKDYpOwoJcG93ZXIucHVzaF9iYWNrKDMwKTsKCXBvd2VyLnB1c2hfYmFjayg2MCk7Cglwb3dlci5wdXNoX2JhY2soOTApOwoJcG93ZXIucHVzaF9iYWNrKDEyMCk7CglwcmljZS5wdXNoX2JhY2soMC4xKTsKCXByaWNlLnB1c2hfYmFjaygwLjMpOwoJcHJpY2UucHVzaF9iYWNrKDAuMik7CglwcmljZS5wdXNoX2JhY2soMC40KTsKCU1heFAgPSAxNDAwOwoJTWluUCA9IDEzMDA7CgoKCgoJcmVzLmNhbGN1bGF0ZSh0aW1lLCBwb3dlciwgcHJpY2UsIE1heFAsIE1pblApOwoJaW50IGE7Cgljb3V0IDw8ICJDb25maWc6ICIgPDwgcG93ZXJbcmVzLmNvbmZpZ1swXV0gPDwgIiAiIDw8IHBvd2VyW3Jlcy5jb25maWdbMV1dIDw8ICIgIiA8PCBwb3dlcltyZXMuY29uZmlnWzJdXSA8PCAiICIgPDwgcG93ZXJbcmVzLmNvbmZpZ1szXV0gPDwgZW5kbDsKCWNvdXQgPDwgIlByb2ZpdCBwZXIgdGltZTogIiA8PCBwb3dlcltyZXMuY29uZmlnWzBdXSAqIHRpbWVbMF0gKiBwcmljZVswXSA8PCAiICIgPDwgcG93ZXJbcmVzLmNvbmZpZ1sxXV0gKiB0aW1lWzFdICogcHJpY2VbMV0gPDwgIiAiIDw8IHBvd2VyW3Jlcy5jb25maWdbMl1dICogdGltZVsyXSAqIHByaWNlWzJdIDw8ICIgIiA8PCBwb3dlcltyZXMuY29uZmlnWzNdXSAqIHRpbWVbM10gKiBwcmljZVszXSA8PCBlbmRsOzsKCWNvdXQgPDwgIktXaCBwZXIgdGltZTogIiA8PCBwb3dlcltyZXMuY29uZmlnWzBdXSAqIHRpbWVbMF0gPDwgIiAiIDw8IHBvd2VyW3Jlcy5jb25maWdbMV1dKnRpbWVbMV0gPDwgIiAiIDw8IHBvd2VyW3Jlcy5jb25maWdbMl1dKnRpbWVbMl0gPDwgIiAiIDw8IHBvd2VyW3Jlcy5jb25maWdbM11dKnRpbWVbM10gPDwgZW5kbDsKCWNvdXQgPDwgIk92ZXJhbGwgUHJvZml0OiAiIDw8IHJlcy5NQVhfcHJvZml0IDw8ICIgVG90YWwgS1doOiAiIDw8IHJlcy5NaW5fS1doIDw8IGVuZGw7CgljaW4gPj4gYTsKICAgIHJldHVybiAwOwp9Cg==
compilation info
prog.cpp: In member function ‘void Result::calculate(std::vector<float>, std::vector<float>, std::vector<float>, float, float)’:
prog.cpp:34:83: error: call of overloaded ‘abs(float)’ is ambiguous
if ((money > MAX_profit && p <= MaxP && p >= MinP) || (abs(money - MAX_profit) < 0.0001 && p < Min_KWh))
^
In file included from /usr/include/c++/6/cstdlib:75:0,
from /usr/include/c++/6/ext/string_conversions.h:41,
from /usr/include/c++/6/bits/basic_string.h:5417,
from /usr/include/c++/6/string:52,
from /usr/include/c++/6/bits/locale_classes.h:40,
from /usr/include/c++/6/bits/ios_base.h:41,
from /usr/include/c++/6/ios:42,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from prog.cpp:3:
/usr/include/stdlib.h:735:12: note: candidate: int abs(int)
extern int abs (int __x) __THROW __attribute__ ((__const__)) __wur;
^~~
In file included from /usr/include/c++/6/ext/string_conversions.h:41:0,
from /usr/include/c++/6/bits/basic_string.h:5417,
from /usr/include/c++/6/string:52,
from /usr/include/c++/6/bits/locale_classes.h:40,
from /usr/include/c++/6/bits/ios_base.h:41,
from /usr/include/c++/6/ios:42,
from /usr/include/c++/6/ostream:38,
from /usr/include/c++/6/iostream:39,
from prog.cpp:3:
/usr/include/c++/6/cstdlib:185:3: note: candidate: __int128 std::abs(__int128)
abs(__GLIBCXX_TYPE_INT_N_0 __x) { return __x >= 0 ? __x : -__x; }
^~~
/usr/include/c++/6/cstdlib:180:3: note: candidate: long long int std::abs(long long int)
abs(long long __x) { return __builtin_llabs (__x); }
^~~
/usr/include/c++/6/cstdlib:172:3: note: candidate: long int std::abs(long int)
abs(long __i) { return __builtin_labs(__i); }
^~~
stdout