Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #define maxn 100100
- int n, ans, mx2;
- int num[maxn], mx1[3] = {0};
- int max(int a, int b) {
- return a > b ? a : b;
- }
- void add(int x) {
- int minIdx = 0;
- int i;
- for (i = 0; i < 3; ++i) {
- if (mx1[i] < mx1[minIdx]) {
- minIdx = i;
- }
- }
- if (x > mx1[minIdx]) {
- mx1[minIdx] = x;
- }
- }
- int main() {
- scanf("%d", &n);
- ans = 0;
- mx2 = 0;
- int i;
- for (i = 1; i <= n; ++i) {
- scanf("%d", &num[i]);
- if (num[i] % 3 == 2) {
- mx2 = max(mx2, num[i]);
- }
- if (num[i] % 3 == 1) {
- add(num[i]);
- }
- }
- if (mx2 != 0 && mx1[0] != 0) {
- ans = max(ans, mx2 + max(max(mx1[0], mx1[1]), mx1[2]));
- }
- if (mx1[2] != 0) {
- ans = max(ans, mx1[0] + mx1[1] + mx1[2]);
- }
- if (ans == 0) {
- printf("impossible\n");
- } else {
- printf("%d\n", ans);
- }
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment