/*
*** ** * * ** * * * * ** * ***** * *
* * * * * * * * * * ** ** * * * * * *
*** **** * **** * * * * * * **** * * *
* * * * * * * ** * * * * * * *
*** * * * * * * * * * * * * * *
*/
#pragma GCC optimize("Ofast")
#include<bits/stdc++.h>
using namespace std;
/*********************Sayan Maity****************************/
#define ll long long
#define ull unsigned long long
#define os(x) cout<<x<<" ";
#define on(x) cout<<x<<endl;
#define ump unordered_map
#define pb push_back
#define all(x) x.begin(), x.end()
#define nn cout<<endl;
#define o(x) cout<<x;
#define in(x) cin>>x;
#define in2(x , y) cin>>x>>y;
#define in3(x , y , z) cin>>x>>y>>z;
#define in4(x , y , z , m) cin>>x>>y>>z>>m;
#define in5(x , y , z , m , n) cin>>x>>y>>z>>m>>n;
#define vt vector
#define pb push_back
/*********************Sayan Maity****************************/
#define mod 1000000007
#define FOR(i , x , n) for(int i=x ; i<=n ; ++i)
#define FORR(i , x , n) for(int i=x ; i>=n ; --i)
#define FOR1(i, n) for(int i=1; i<=n; ++i)
#define FOR0(i, n) for(int i=0; i<n; ++i)
#define con continue;
int dx[4]={-1, 0, 1, 0};
int dy[4]={0, 1, 0, -1};
//ar.erase(unique(ar.begin(), ar.end()), ar.end()); //remove duplicates from a vector
bool is_prime[1000006];
template <typename T>
void swap(T &a , T &b){
T temp=a;
a=b;
b=temp;
}
template <typename T>
T bisearch(T a[] , T l , T r , T x){
if(l<=r){
T mid=(l+r)/2;
if(a[mid]==x)
return mid;
if(a[mid]>x)
return bisearch(a , l , mid-1 , x);
if(a[mid]<x)
return bisearch(a , mid+1 , r , x);
}
return INT_MIN;
}
template <typename T>
T pwr(T x, T y)
{
T temp;
if( y == 0)
return 1;
temp = pwr(x, y/2);
if (y%2 == 0)
return temp*temp;
else
return x*temp*temp;
}
template <typename T>
T gcd(T a, T b)
{
if (b == 0)
return a;
return gcd(b, a % b);
}
/*
int a[] = {0, 1, 2, 3, 4, 5};
for (int n : a)
std::cout << n << ' ';
*/
template <typename T>
T ncr(T n, T r)
{
if(r==0|r==n)
return 1;
else
return ncr(n-1,r-1)+ncr(n-1,r);
}
template <typename T>
void soE(T n)
{
memset(is_prime , true , sizeof(is_prime));
is_prime[0]=is_prime[1]=false;
for (int p=2; p*p<=n; p++)
{ /*********************Sayan Maity****************************/
if (is_prime[p] == true)
{
for (int i=p*p; i<=n; i += p)
is_prime[i] = false;
}
}
}
template <typename T>
void print(vector<T> a)
{
int size=a.size();
for(int i=0; i<size; ++i)
cout<<a[i]<<" ";
cout<<endl;
}
/********************************debug**************************************/
template <typename T>
void debug(vector<T> a, string name)
{
cerr<<"debug"<<" "<<name<<endl;
for(int i=0; i<(int)a.size(); ++i)
cerr<<a[i]<<" ";
cerr<<endl;
}
template <typename T>
void debug(deque<T> a, string name)
{
cerr<<"debug"<<" "<<name<<endl;
for(int i=0; i<(int)a.size(); ++i)
cerr<<a[i]<<" ";
cerr<<endl;
}
template <typename T>
void debug(vector<pair<T, T> > a, string name)
{
cerr<<"debug"<<" "<<name<<endl;
cerr<<"first"<<endl;
int n=a.size();
for(int i=0; i<n; ++i)
cerr<<a[i].first<<" ";
cerr<<endl;
cerr<<"second"<<endl;
for(int i=0; i<n; ++i)
cerr<<a[i].second<<" ";
cerr<<endl;
}
template <typename T>
void debug(vector<vector<T>> a, string name)
{
cerr<<"debug "<<name<<endl;
int n=a.size();
for(int i=0; i<n; ++i)
{
cerr<<i<<"->";
for(int j=0; j<(int)a[i].size(); ++j)
cerr<<a[i][j]<<" ";
cerr<<endl;
}
}
template <typename T>
void debug(priority_queue<T> pq, string name)
{
cout<<name<<endl;
while(!pq.empty())
{
cout<<pq.top()<<endl;
pq.pop();
}
cout<<"end "<<name<<endl;
cout<<endl;
}
template <typename T>
void debug(priority_queue<T, vector<T>, greater<T>> pq, string name)
{
cout<<name<<endl;
while(!pq.empty())
{
cout<<pq.top()<<endl;
pq.pop();
}
cout<<"end "<<name<<endl;
cout<<endl;
}
void debug(unordered_map<string, int> mp, string name)
{
cerr<<"debug "<<name<<endl;
for(auto it: mp)
{
cerr<<it.first<<" "<<it.second<<endl;
}
}
template <typename T>
void debug(unordered_map<T, T> mp, string name)
{
cerr<<"debug "<<name<<endl;
for(auto it: mp)
{
cerr<<it.first<<" "<<it.second<<endl;
}
}
template <typename T>
void debug(T x, string name)
{
cerr<<name<<":"<<x<<endl;
}
/*
__builtin_popcount(n);// return number of setbits present in binary representation in n;
auto it=upper_bound(v.begin() , v.end() , 7);//returns iterator or pointers of greater than the element
auto it=lower_bound(v.begin() , v.end() , 7);//returns iterator or pointers of the element or greater than the element
array or vector should be sorted
auto it=min_element(v.begin() , v.end());//returns pointer
auto it=max_element(v.begin() , v.end());//
***incase of set or map syntax: ob.upper/lower_bound(----)
int sum=accumulate(v.begin() , v.end() , x);//return sum of the vector+x
int ct=count(v.begin() , v.end() , x);
find(v.begin() , v.end , x);
reverse(v.begin() , v.end());
lambda function
syntax: fun=[](int x){return x%2==0;}
all_of(v.begin() , v.end() , fun);
any_of(v.begin() , v.end() , fun);
none_of(v.begin() , v.end() , fun);
this 3 functions return true or false;
*/
/*
bool cmp(vec<pair<int , int> > &a , vec<pair<int , int> > &b){
return a.second<b.second;
}
sort(vp.begin() , vp.end() , cmp);
*/
class dsu
{
public:
vector<int> par, rank;
dsu()
{
}
dsu(int size)
{
for(int i=0 ; i<=size ; ++i)
{
par.push_back(i);
rank.push_back(1);
}
}
int find(int x)
{
if(par[x]==x)
return x;
int temp=find(par[x]);
par[x]=temp;
return temp;
}
void makeUnion(int x, int y)
{
int lx=find(x), ly=find(y);
if(lx!=ly)
{
if(rank[lx]>rank[ly])
{
par[ly]=lx;
}
else if(rank[lx]<rank[ly])
{
par[lx]=ly;
}else{
par[lx]=ly;
rank[ly]++;
}
}
}
void display()
{
for(int i=0; i<(int)par.size(); ++i)
cerr<<i<<" ";
cerr<<endl;
for(int i=0; i<(int)par.size(); ++i)
cerr<<par[i]<<" ";
cerr<<endl;
}
};
bool cmp(pair<int , int> &a , pair<int , int> &b){
return a.second<b.second;
}
//vector<vector<int> > v(n , vector<int>(n , 0))
/*********************Sayan Maity****************************/
int main(){
ios::sync_with_stdio(0);
cin.tie(NULL);
cout.tie(NULL);
std::ofstream error("error.txt");
std::streambuf *errbuf = std::cerr.rdbuf(error.rdbuf());
// cerr<<"case "<<T<<endl;
int a, b, n;
cin>>a>>b>>n;
deque<int> ans;
bool f=true;
for(int i=0; i<(int)ceil(n/2.0); ++i)
{
ans.push_back(f);
f=!f;
ans.push_back(f);
f=!f;
a--;
b--;
}
if(n%2==0)
{
if(a)
{
while(b--)
ans.push_front(1);
while(a--)
ans.push_front(0);
}else if(b)
{
while(a--)
ans.push_back(0);
while(b--)
ans.push_back(1);
}
}else
{
while(a--)
ans.push_back(0);
while(b--)
ans.push_front(1);
}
/*while(a>1)
ans.push_back(0), a--;
while(b>1)
ans.push_front(1), --b;
if(n%2==0)
{
if(a)
ans.push_front(0), --a;
else if(b)
ans.push_back(1), --b;
}*/
/* while(a--)
ans.push_back(0);
while(b--)
ans.push_front(1);*/
/* if(n%2==0)
{
int cnta=n/2, cntb=n/2;
int f=1;
while(cnta or cntb)
{
if(f and cntb)
{
ans.push_back(f);
f=0;
cntb--;
}else if(cnta)
{
ans.push_back(f);
f=1;
cnta--;
}
}
debug(ans, "ans");
cnta=a-n/2, cntb=b-n/2;
debug(cnta, "cnta");
debug(cntb, "cntb");
if(cnta)
ans.push_front(0), cnta--;
else if(cntb)
ans.push_back(1), cntb--;
debug(ans, "ans");
debug(cnta, "cnta");
while(cnta--)
ans.push_back(0);
while(cntb--)
ans.push_front(1);
debug(ans, "ans");
}else{
int cnta=n/2+1, cntb=n/2+1;
int f=1;
while(cnta or cntb)
{
if(f and cntb)
{
ans.push_back(f);
f=0;
cntb--;
}else if(cnta)
{
ans.push_back(f);
f=1;
cnta--;
}
}
debug(cnta, "cnta");
debug(cntb, "cntb");
cnta=a-(n/2+1), cntb=b-(n/2+1);
debug(ans, "ans");
while(cnta--)
ans.push_back(0);
while(cntb--)
ans.push_front(1);
}*/
for(int i=0; i<(int)ans.size(); ++i)
cout<<ans[i];
/*
1.check corner case.
*/
std::cerr.rdbuf(errbuf);
return 0;
}
1062B - Math | 1294C - Product of Three Numbers |
749A - Bachgold Problem | 1486B - Eastern Exhibition |
1363A - Odd Selection | 131B - Opposites Attract |
490C - Hacking Cypher | 158B - Taxi |
41C - Email address | 1373D - Maximum Sum on Even Positions |
1574C - Slay the Dragon | 621A - Wet Shark and Odd and Even |
1395A - Boboniu Likes to Color Balls | 1637C - Andrew and Stones |
1334B - Middle Class | 260C - Balls and Boxes |
1554A - Cherry | 11B - Jumping Jack |
716A - Crazy Computer | 644A - Parliament of Berland |
1657C - Bracket Sequence Deletion | 1657B - XY Sequence |
1009A - Game Shopping | 1657A - Integer Moves |
230B - T-primes | 630A - Again Twenty Five |
1234D - Distinct Characters Queries | 1183A - Nearest Interesting Number |
1009E - Intercity Travelling | 1637B - MEX and Array |