Skip to content

Commit 2e2035c

Browse files
authored
Update 497 - Strategic Defense Initiative.cpp
1 parent 2ff113d commit 2e2035c

File tree

1 file changed

+25
-29
lines changed

1 file changed

+25
-29
lines changed

UVA/497 - Strategic Defense Initiative.cpp

+25-29
Original file line numberDiff line numberDiff line change
@@ -15,51 +15,47 @@ int main() {
1515

1616
while(cases-- != 0) {
1717
memset(p, -1, sizeof p);
18-
memset(t, 0, sizeof t);
1918
memset(d, 0, sizeof d);
2019

2120
for(int i = 0; getline(cin, s) && s != ""; ++i) {
2221
a[i] = stoi(s);
2322
n = i;
2423
}
25-
2624
++n;
2725

2826
int l = 1;
29-
t[0] = a[0];
27+
t[0] = a[0];
3028

31-
for(int i = 1, idx; i < n; ++i) {
32-
idx = upper_bound(t, t + l, a[i]) - t;
29+
for(int i = 1; i < n; ++i) {
30+
int idx = upper_bound(t, t + l, a[i]) - t;
3331

34-
if (idx > 0 && a[i] > t[idx - 1]) {
35-
t[idx] = a[i];
36-
d[idx] = i;
37-
p[d[idx]] = d[idx - 1];
38-
} else if(idx == 0) {
39-
t[idx] = a[i];
40-
d[idx] = i;
41-
p[d[idx]] = d[idx - 1];
42-
}
32+
if((idx > 0 && a[i] > t[idx - 1]) || idx == 0) {
33+
t[idx] = a[i];
34+
d[idx] = i;
35+
p[i] = d[idx - 1];
4336

44-
if(idx == l) {
45-
++l;
46-
}
47-
}
37+
if(idx == l) {
38+
++l;
39+
}
40+
}
41+
}
4842

49-
printf("Max hits: %d\n", l);
43+
printf("Max hits: %d\n", l);
5044

51-
int cur = d[l - 1];
52-
int idx = l - 1;
53-
do {
54-
sol[idx--] = a[cur];
55-
cur = p[cur];
56-
} while(cur != -1);
45+
int cur = d[l - 1];
46+
int idx = l - 1;
47+
do {
48+
sol[idx--] = a[cur];
49+
cur = p[cur];
50+
} while(cur != -1);
5751

58-
for (int i = 0; i < l; ++i) {
59-
printf("%d\n", sol[i]);
60-
}
52+
for(int i = 0; i < l; ++i) {
53+
printf("%d\n", sol[i]);
54+
}
6155

62-
puts("");
56+
if(cases) {
57+
puts("");
58+
}
6359
}
6460

6561
return 0;

0 commit comments

Comments
 (0)