Submission details
Task:3-sum
Sender:Kasper Kivimäki
Submission time:2020-09-07 00:34:48 +0300
Language:C++ (C++11)
Status:COMPILE ERROR

Compiler report

input/code.cpp:46:11: error: '::main' must return 'int'
 void main() {
           ^
input/code.cpp: In function 'int main()':
input/code.cpp:51:20: error: invalid conversion from 'void*' to 'int*' [-fpermissive]
     int *d = malloc(sizeof(int) * n);
              ~~~~~~^~~~~~~~~~~~~~~~~
input/code.cpp:53:9: error: return-statement with no value, in function returning 'int' [-fpermissive]
         return;
         ^~~~~~
input/code.cpp:55:9: error: return-statement with no value, in function returning 'int' [-fpermissive]
         return;
         ^~~~~~
input/code.cpp:49:10: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d", &n);
     ~~~~~^~~~~~~~~~
input/code.cpp:58:14: warning: ignoring return value of 'int scanf(const char*, ...)', declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d", &d[i]);
         ~~~~~^~~~~~~~~~~~~

Code

#include <stdio.h>
#include <stdlib.h>

int f1(int *d, int n) {
    int j = 0;
    int m = d[j];

    for (int i = 1; i < n; i++) {
        if (d[i] > m) {
            j = i;
            m = d[i];
        }
    }
    return j;
}

int f2(int *d, int n, int m1) {
    int j = 0;
    int m = d[j];

    for (int i = 1; i < n; i++) {
        if (i == m1) continue;
        if (d[i] > m) {
            j = i;
            m = d[i];
        }
    }
    return j;
}

int f3(int *d, int n, int m1, int m2) {
    int j = 0;
    int m = d[j];

    for (int i = 1; i < n; i++) {
        if (i == m1) continue;
        if (i == m2) continue;
        if (d[i] > m) {
            j = i;
            m = d[i];
        }
    }
    return j;
}

void main() {
    int n;

    scanf("%d", &n);

    int *d = malloc(sizeof(int) * n);
    if (n < 3)
        return;
    if (n > 100)
        return;

    for (int i = 0; i < n; i++)
        scanf("%d", &d[i]);

    int m1 = f1(d, n);
    int m2 = f2(d, n, m1);
    int m3 = f3(d, n, m1, m2);

    printf("%d %d %d\n", d[m1], d[m2], d[m3]);
}