Cod sursa(job #2416884)

Utilizator MihaiB729Bucur Mihai MihaiB729 Data 28 aprilie 2019 14:43:22
Problema Invers modular Scor 0
Compilator cpp-64 Status done
Runda Arhiva educationala Marime 2.43 kb
#include <iostream>
#include <fstream>
#include <cmath>
using namespace std;
ifstream fin ("puncte3.in");
ofstream fout ("puncte3.out");
int n,a[1001][1001],k;
struct valori
{
    int lin,col;
} v[1002001];
int main()
{
    fin>>n;
    for(int i=1; i<=n; i++)
    {
        int x,y;
        fin>>x>>y;
        k++;
        a[y+1][x+1]=1;
        v[k].lin=y+1;
        v[k].col=x+1;
    }
    int i=1,j;
    while(i<=k)
    {
        int aux;
        j=i+1;
        while(j<=k)
        {
            aux=k;
            if(v[i].lin==v[j].lin && abs(v[i].lin-v[j].lin)!=1)
            {

                int j1=v[i].col,j2=v[j].col;
                if(v[j].col<v[i].col)
                    swap(j1,j2);
                     fout<<"se adauga pe linie de la coloana "<<j1<<" pana la"<<j2<<endl;
                for(int j3=j1+1; j3<j2; j3++)
                    if(a[v[i].lin][j3]!=1)
                    {
                        a[v[i].lin][j3]=1;
                        k++;
                        v[k].col=j3;
                        v[k].lin=v[i].lin;
                    }
                if(k!=aux)
                {
                    i=1;
                    j=2;
                }
            }
            else if(v[i].col==v[j].col &&abs(v[i].col-v[j].col)!=1)
            {
                int i1=v[i].lin, i2=v[j].lin;
                if(v[j].lin<v[i].lin)
                    swap(i1,i2);
                    fout<<"se adauga pe linie de la linie "<<i1<<" pana la"<<i2<<endl;
                for(int i3=i1+1; i3<i2; i3++)
                    if(a[i3][v[i].col]!=1)
                    {
                        a[i3][v[i].col]=1;
                        k++;
                        v[k].col=v[i].col;
                        v[k].lin=i3;
                    }
                if(k!=aux)
                {
                    i=1;
                    j=2;
                }

            }
            else
                j++;
            if(k!=aux)
            {
                for(int i=1; i<=10; i++)
                {
                    for(int j=1; j<=10; j++)
                        fout<<a[i][j]<<" ";
                    fout<<endl;
                }
                fout<<endl;
            }
        }
        i++;
    }
    /*for(int i=1; i<=10; i++)
    {
        for(int j=1; j<=10; j++)
            fout<<a[i][j]<<" ";
        fout<<endl;
    }*/
    return 0;
}