Submission

Status:

P-P-PP-P-P

Subtask/Task Score:

60/100

Score: 60

User: theem1502

Problemset: จับคู่เลขมงคล

Language: c

Time: 0.001 second

Submitted On: 2025-09-20 14:37:37

#include <stdio.h>
#include <stdlib.h>
int main() {
    int num;
    scanf("%d", &num);


    int luckynumber;
    
    int *thearray = malloc(num * sizeof(int));
    for (int i = 0; i < num; i++) {
        scanf("%d", &thearray[i]);
    }

int *copiedarray = malloc(num * sizeof(int));
for (int i = 0; i < num; i++) {
    copiedarray[i] = thearray[i];
}

scanf("%d", &luckynumber);
    for (int i = 0; i < num; i++) {
        for (int j = i+1; j< num; j++)
 {
    if (thearray[j] < thearray[i]) {
        int temp = thearray[i];
        thearray[i] = thearray[j];
        thearray[j] = temp;
    }
 }    }

int firstpointer = 0;
int secondpointer = num-1;
int **destinationarray = malloc(num*sizeof(int*));
for (int i = 0; i < num; i++) {
    destinationarray[i] = malloc(2 * sizeof(int));
}




int temp = 0;
 for (int i = 0; i < num; i++) {
    if (firstpointer >= secondpointer) {
        break;
    }
    int sum = thearray[firstpointer] + thearray[secondpointer];


    if (sum == luckynumber) {
        
        destinationarray[temp][0] = thearray[secondpointer];
        destinationarray[temp][1] = thearray[firstpointer];

        secondpointer -= 1;
        temp++;
        continue;
    }

    else if(sum > luckynumber) {
        secondpointer-=1;
    }
    else {
        firstpointer += 1;
    }
    
 }


if (temp == 0) {
    printf("%s", "NO");
    return 0;
}
int *check = malloc(temp * sizeof(int));
for (int i = 0; i < temp; i++) {
    for (int j = 0; j < num; j++) {
        if (copiedarray[j] == destinationarray[i][0]) {
            check[i] = 0;
            break;
        }
        if (copiedarray[j] == destinationarray[i][1]) {
            check[i] = 1;
            break;
        }
    }


}
 for (int i = 0; i < temp; i++) {
    if (check[i] == 0) {
    printf("%d %d\n", destinationarray[i][0], destinationarray[i][1]);
    }
    else {
        printf("%d %d\n", destinationarray[i][1], destinationarray[i][0]);
    }
 }
    
    
}