Skip to content

Commit f98f316

Browse files
committed
Fix potential underflows due to unsigned integers
1 parent 6ec9f55 commit f98f316

13 files changed

Lines changed: 21 additions & 21 deletions

File tree

‎code/data-structures/convex_hull_trick.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,7 @@ struct convex_hull_trick {
1111
swap(h[n-2], h[n-1]);
1212
h.pop_back(); } }
1313
double get_min(double x) {
14-
int lo = 0, hi = size(h) - 2, res = -1;
14+
int lo = 0, hi = (int)size(h) - 2, res = -1;
1515
while (lo <= hi) {
1616
int mid = lo + (hi - lo) / 2;
1717
if (intersect(mid) <= x) res = mid, lo = mid + 1;

‎code/data-structures/kd_tree.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -42,7 +42,7 @@ template <int K> struct kd_tree {
4242
node *root;
4343
// kd_tree() : root(NULL) { }
4444
kd_tree(vector<pt> pts) {
45-
root = construct(pts, 0, size(pts) - 1, 0); }
45+
root = construct(pts, 0, (int)size(pts) - 1, 0); }
4646
node* construct(vector<pt> &pts, int from, int to, int c) {
4747
if (from > to) return NULL;
4848
int mid = from + (to - from) / 2;

‎code/graph/blossom.cpp‎

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,15 +55,15 @@ vi find_augmenting_path(const vector<vi> &adj,const vi &m){
5555
rep(i,0,size(p)) p[i] = root[p[i]];
5656
return p; }
5757
if (!p[0] || (m[c] != -1 && p[t+1] != par[m[c]]))
58-
reverse(p.begin(), p.end()), t = size(p)-t-1;
58+
reverse(p.begin(), p.end()), t=(int)size(p)-t-1;
5959
rep(i,0,t) q.push_back(root[p[i]]);
6060
iter(it,adj[root[p[t-1]]]) {
6161
if (par[*it] != (s = 0)) continue;
6262
a.push_back(c), reverse(a.begin(), a.end());
6363
iter(jt,b) a.push_back(*jt);
6464
while (a[s] != *it) s++;
65-
if ((height[*it] & 1) ^ (s < size(a) - size(b)))
66-
reverse(a.begin(), a.end()), s = size(a)-s-1;
65+
if((height[*it]&1)^(s<(int)size(a)-(int)size(b)))
66+
reverse(a.begin(),a.end()), s=(int)size(a)-s-1;
6767
while(a[s]!=c)q.push_back(a[s]),s=(s+1)%size(a);
6868
q.push_back(c);
6969
rep(i,t+1,size(p)) q.push_back(root[p[i]]);

‎code/graph/dinic.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,8 +10,8 @@ struct flow_network {
1010
memset(head = new int[n], -1, n*sizeof(int)); }
1111
void reset() { e = e_store; }
1212
void add_edge(int u, int v, int uv, int vu=0) {
13-
e.push_back(edge(v, uv, head[u])); head[u] = size(e)-1;
14-
e.push_back(edge(u, vu, head[v])); head[v] = size(e)-1; }
13+
e.push_back(edge(v,uv,head[u])); head[u]=(int)size(e)-1;
14+
e.push_back(edge(u,vu,head[v])); head[v]=(int)size(e)-1;}
1515
int augment(int v, int t, int f) {
1616
if (v == t) return f;
1717
for (int &i = curh[v], ret; i != -1; i = e[i].nxt)

‎code/graph/edmonds_karps.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,8 +9,8 @@ struct flow_network {
99
memset(head = new int[n], -1, n*sizeof(int)); }
1010
void reset() { e = e_store; }
1111
void add_edge(int u, int v, int uv, int vu=0) {
12-
e.push_back(edge(v, uv, head[u])); head[u] = size(e)-1;
13-
e.push_back(edge(u, vu, head[v])); head[v] = size(e)-1; }
12+
e.push_back(edge(v,uv,head[u])); head[u]=(int)size(e)-1;
13+
e.push_back(edge(u,vu,head[v])); head[v]=(int)size(e)-1;}
1414
int max_flow(int s, int t, bool res=true) {
1515
e_store = e;
1616
int l, r, v, f = 0;

‎code/graph/edmonds_karps_mcmf.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -11,9 +11,9 @@ struct flow_network {
1111
void reset() { e = e_store; }
1212
void add_edge(int u, int v, int cost, int uv, int vu=0) {
1313
e.push_back(edge(v, uv, cost, head[u]));
14-
head[u] = size(e)-1;
14+
head[u] = (int)size(e)-1;
1515
e.push_back(edge(u, vu, -cost, head[v]));
16-
head[v] = size(e)-1; }
16+
head[v] = (int)size(e)-1; }
1717
ii min_cost_max_flow(int s, int t, bool res=true) {
1818
e_store = e;
1919
memset(pot, 0, n*sizeof(int));

‎code/graph/hld.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ struct HLD {
3434
vi uat, vat; int res = -1;
3535
while (u != -1) uat.push_back(u), u = parent[head[u]];
3636
while (v != -1) vat.push_back(v), v = parent[head[v]];
37-
u = size(uat) - 1, v = size(vat) - 1;
37+
u = (int)size(uat) - 1, v = (int)size(vat) - 1;
3838
while (u >= 0 && v >= 0 && head[uat[u]] == head[vat[v]])
3939
res = (loc[uat[u]] < loc[vat[v]] ? uat[u] : vat[v]),
4040
u--, v--;

‎code/graph/hld.test.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@ struct HLD_naive {
3333
vi uat, vat; int res = -1;
3434
while (u != -1) uat.push_back(u), u = parent[u].first;
3535
while (v != -1) vat.push_back(v), v = parent[v].first;
36-
u = size(uat) - 1, v = size(vat) - 1;
36+
u = (int)size(uat) - 1, v = (int)size(vat) - 1;
3737
while (u >= 0 && v >= 0 && uat[u] == vat[v])
3838
res = uat[u], u--, v--;
3939
return res;
@@ -205,7 +205,7 @@ void test() {
205205
{
206206
if (n > 1)
207207
{
208-
int i = randint(0, size(edges) - 1);
208+
int i = randint(0, (int)size(edges) - 1);
209209
int u = edges[i].first,
210210
v = edges[i].second;
211211

‎code/mathematics/primepi.cpp‎

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,8 @@ unordered_map<ll,ll> primepi(ll n) {
77
vi ps = prime_sieve(st);
88
ps.push_back(st+1);
99
rep(i,0,3) dp[i] = new ll[2*st];
10-
ll *pre = new ll[size(ps)-1];
11-
rep(i,0,size(ps)-1)
10+
ll *pre = new ll[(int)size(ps)-1];
11+
rep(i,0,(int)size(ps)-1)
1212
pre[i] = f(ps[i]) + (i == 0 ? f(1) : pre[i-1]);
1313
#define L(i) ((i)<st?(i)+1:n/(2*st-(i)))
1414
#define I(l) ((l)<st?(l)-1:2*st-n/(l))

‎code/other/two_sat.cpp‎

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ struct TwoSat {
2121
br |= !V[*v].val; }
2222
res = br - 3;
2323
if (V[u].num == V[u].lo) rep(i,res+1,2) {
24-
for (int j = size(S)-1; ; j--) {
24+
for (int j = (int)size(S)-1; ; j--) {
2525
int v = S[j];
2626
if (i) {
2727
if (!put(v-n, res)) return 0;

0 commit comments

Comments
 (0)