Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- #include <stdint.h>
- int32_t satsum(int32_t v1, int32_t v2) {
- int tp = 0;
- if ((v1 <= 0 && v2 >= 0) || (v2 <= 0 && v1 >= 0)) {
- return v1 + v2;
- } else {
- uint32_t v_1;
- uint32_t v_2;
- if (v1 < 0) {
- v_1 = (uint32_t) -v1;
- v_2 = (uint32_t)-v2;
- tp = 1;
- } else {
- v_1 = (uint32_t) v1;
- v_2 = (uint32_t) v2;
- tp = 0;
- }
- if (tp == 1) {
- if (((v_1 + (v_2 - (v_1 + v_2 + 1))) / 2) + 1 >= v_1 + v_2) {
- return v1 + v2;
- } else {
- uint32_t ans = (((v_1 + (v_2 - (v_1 + v_2 + 1))) / 2) + 1);
- int a = (int) ans;
- return -(a);
- }
- } else {
- if (((v_1 + (v_2 - (v_1 + v_2 + 1))) / 2) >= v_1 + v_2) {
- return v1 + v2;
- } else {
- uint32_t ans = (v_1 + (v_2 - (v_1 + v_2 + 1))) / 2;
- int a = (int) ans;
- return a;
- }
- }
- }
- }
- int main() {
- printf("%d", satsum(-2147483645,-4)); //2147483647 and -2147483648
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement