Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <cstdio>
- #define rad 107
- FILE *fin, *fout;
- using namespace std;
- int n, k;
- struct lista
- {
- int val;
- lista *prev, *next, *next_sqrt;
- } first[4];
- void build(lista *node, int v)
- {
- for(int i = 1; i<= n; ++i)
- {
- node->val = v + i;
- node->next = new lista();
- node->next->prev = node;
- node = node->next;
- }
- }
- void init(lista *node)
- {
- lista *it;
- int i;
- it = node;
- for(i = 1; i <= rad; ++i)
- {
- if(it->next == NULL || it->next->val == 0)
- {
- return;
- }
- if(!node->prev) {node->prev = new lista();node->prev->val =-1;}
- node->prev->next_sqrt = it;
- it = it->next;
- }
- for(; i<= n; ++i)
- {
- node->next_sqrt = it;
- node = node->next;
- it = it->next;
- }
- }
- void afisare(lista *node)
- {
- if(node == NULL || node->val == 0)
- {
- printf("\n");
- return ;
- }
- printf("%d ", node->val);
- afisare(node->next);
- }
- void m_insert(int v, int pos, lista *node)
- {
- int i = 1;
- lista *tmp1, *tmp2, *it;
- while(i+rad < pos)
- {
- i+=rad;
- node = node->next_sqrt;
- };
- while(i+1 < pos)
- {
- ++i;
- node = node->next;
- };
- ///aici daca pun sa imi afisaeze ceva imi merge programul si face ce trebuie
- ///daca las gol intra in loop infinit
- tmp1 = node->next;
- node->next = tmp2;
- tmp2->val = v;
- tmp2->prev = node;
- tmp2->next = tmp1;
- if(node->next_sqrt)
- if(node->next_sqrt->next)
- tmp2->next_sqrt = node->next_sqrt->next;
- tmp1->prev = tmp2;
- it = tmp2;
- for(; i>= pos-rad && i >=1 ; --i)
- {
- it = it->prev;
- }
- while(it != node && tmp2)
- {
- it->next_sqrt = tmp2;
- it = it->next;
- tmp2 = tmp2->next;
- }
- }
- void citire()
- {
- scanf("%d%d", &n, &k);
- }
- int main()
- {
- fin = freopen("grid.in", "r", stdin);
- fout = freopen("grid.out", "w", stdout);
- citire();
- build(&first[1], 0);
- build(&first[2], n);
- build(&first[3], n+n);
- init(&first[1]);
- init(&first[2]);
- init(&first[3]);
- m_insert(18, 5, &first[1]);
- afisare(&first[1]);
- afisare(&first[2]);
- afisare(&first[3]);
- fclose(fin);
- fclose(fout);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement