#include <iostream>
#include<algorithm>
#include<vector>
#include<set>
using namespace std;
int main() {
int i,sum,sum1,n;
cin>>n;
vector<int>pre;
set<int>s1;
set<int>s2;
int temp1[n];
int temp2[n];
for(i=0;i<n;++i)
cin>>temp1[i];
for(i=0;i<n;++i)
cin>>temp2[i];
for(i=0;i<sizeof(temp1);++i)
s1.insert(temp1[i]);
for(i=0;i<sizeof(temp2);++i)
s1.insert(temp2[i]);
for(i=n;i>=0;--i)
sum+=i;
for(i=0;i<s1.size();++i)
sum1+=s1[i];
if(sum==sum1)
cout<<"I become the guy.";
else
cout<<"Oh, my keyboard!";
return 0;
}
ideone link:https://ideone.com/trfOz0 i am trying to add the elements in the set s1 but it seems like this way is not working,how can i do it?
You can't index a std::set
. It's not built that way. You can check for membership, but you can't just pick the n
th element.
In order to take the sum, you'd have to iterate over the set - but not via index, via iterators:
int sum = 0;
for (std::set<int>::iterator it = s1.begin(); it != s1.end(); ++it) {
sum += *it;
}
Or using std::accumulate
:
int sum = std::accumulate(s1.begin(), s1.end(), 0);
Or in C++11:
int sum = 0;
for (int i : s1) {
sum += i;
}
You don't initialise your variables sum
, and sum1
. Using an uninitialised variable is undefined behaviour in C++.
std::set
does not define operator[]
. So your code will not compile.
The simplest way to sum an STL container like a set
is to use
std::accumulate(s1.begin(), s1.end(), 0);
Where the 0
(which must be of the same type as the contains type in the set) is the value you want if the set doesn't contain any elements.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With