Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <stdio.h>
- #include <stdlib.h>
- static int n = 1000000;
- static int m = 10000000;
- int inArray (int x, int* arr) {
- for (int i = 0; i < 3; i++) {
- if (x == arr[i]) return 1;
- }
- return 0;
- }
- int findDest (int x, int selected[]) {
- if (x < 0) x = n - 1;
- while (inArray(x, selected)) x--;
- return x;
- }
- int* part1 (int* nums) {
- int curr = nums[0];
- int selected[3];
- int i = 0;
- while (i < m) {
- selected[0] = nums[curr];
- selected[1] = nums[selected[0]];
- selected[2] = nums[selected[1]];
- int dest = findDest(curr - 1, selected);
- int temp = nums[dest];
- nums[dest] = selected[0];
- nums[curr] = nums[selected[2]];
- nums[selected[2]] = temp;
- curr = nums[curr];
- i++;
- }
- return nums;
- }
- int main () {
- int i;
- int* nums = calloc (n, sizeof(int));
- nums[0] = 1;
- nums[1] = 2;
- nums[2] = 3;
- nums[3] = 4;
- nums[4] = 8;
- nums[8] = 7;
- nums[7] = 5;
- nums[5] = 9;
- nums[9] = 6;
- nums[6] = 10;
- nums[n - 1] = 0;
- for (i = 10; i < n - 1; i++) {
- nums[i] = i + 1;
- }
- int* seq = part1(nums);
- printf("%d * %d = %ld\n", seq[1], seq[seq[1]], (long)seq[1] * (long)seq[seq[1]]);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement