#include <bits/stdc++.h>
using namespace std;
#define pb push_back
int64_t n, m;
vector<int64_t> a(200005), pr(200005, 0);
int sp[20][200005];
int lg[200005];
bool an[200005];
int query(int l, int r) {
int k = lg[r - l + 1];
int x = sp[k][l];
int y = sp[k][r - (1 << k) + 1];
return (a[x] >= a[y] ? x : y);
}
void rec(int l, int r, int par_idx) {
if (l > r) return;
int p = query(l, r);
if (par_idx == -1) {
an[p] = true;
} else {
int64_t current_sum = pr[r] - pr[l - 1];
if (an[par_idx] && current_sum >= a[par_idx]) {
an[p] = true;
} else {
an[p] = false;
}
}
rec(l, p - 1, p);
rec(p + 1, r, p);
}
void solve() {
if (!(cin >> n >> m)) return;
for (int i = 1; i <= n; i++) {
cin >> a[i];
pr[i] = pr[i - 1] + a[i];
sp[0][i] = i;
}
for (int i = 1; i <= m; i++) {
int u, v;
cin >> u >> v;
}
lg[1] = 0;
for (int i = 2; i <= n; i++) lg[i] = lg[i / 2] + 1;
for (int i = 1; i < 20; i++) {
for (int j = 1; j + (1 << i) - 1 <= n; j++) {
int x = sp[i - 1][j];
int y = sp[i - 1][j + (1 << (i - 1))];
sp[i][j] = (a[x] >= a[y] ? x : y);
}
}
rec(1, n, -1);
for (int i = 1; i <= n; i++) {
cout << (an[i] ? '1' : '0');
}
cout << endl;
}
int main() {
ios::sync_with_stdio(false);
cin.tie(nullptr);
solve();
return 0;
}