Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include <fstream>
- #include <bitset>
- using namespace std;
- ifstream in("list.in");
- ofstream out("list.out");
- struct Nod
- {
- int a,b;
- Nod* next;
- };
- typedef struct Nod * Lista;
- void ADD(Lista &Prim, Lista Ultim, int x, int y)
- {
- Lista nod=(Nod *)malloc(sizeof(Nod *));
- nod->a=x;
- nod->b=y;
- nod->next=NULL;
- if(Ultim==NULL)
- {
- nod->next=Prim;
- Prim=nod;
- }
- else
- {
- nod->next=Ultim->next;
- Ultim->next=nod;
- }
- }
- int n;
- int main()
- {
- Lista Prim=NULL, Ultim=NULL;
- in>>n;
- for(;n;n--)
- {
- int x,y;
- in>>x>>y;
- if(Ultim==NULL)
- {
- ADD(Prim,NULL,x,y);
- Ultim=Prim;
- }
- else
- {
- ADD(Prim,Ultim,x,y);
- Ultim=Ultim->next;
- }
- }
- Lista slow=NULL,fast=Prim;
- for(Lista p=Prim; p; p=p->next)
- {
- if(p->a%2==0 && p->b%2)
- {
- int w=2*(p->a+p->b);
- ADD(Prim,p,w,w-p->b);
- p=p->next;
- slow=fast;
- fast=fast->next;
- }
- else if(p->a%2 && p->b%2==0)
- {
- int w=2*(p->a+p->b);
- ADD(Prim,slow,w-p->a,w);
- }
- else if(p->a%2==0 && p->b%2==0)
- {
- int w=(p->a+p->b)/2;
- ADD(Prim,p,w,w+p->b);
- p=p->next;
- slow=fast;
- fast=fast->next;
- }
- else
- {
- int w=(p->a+p->b)/2;
- ADD(Prim,slow,w+p->a,w);
- }
- slow=fast;
- fast=fast->next;
- }
- for(Lista q=Prim; q; q=q->next)
- out<<q->a<<" "<<q->b<<"\n";
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement