Cod sursa(job #230779)

Utilizator geoNechifor George geo Data 14 decembrie 2008 10:30:03
Problema Tablete Scor 50
Compilator cpp Status done
Runda Algoritmiada 2009, Runda 1, Clasele 5-8 Marime 1.78 kb
#include <stdio.h>
int main()
{
    FILE *fin = fopen("tablete.in","r");
    FILE *fout = fopen("tablete.out","w");
    int n,k;
    fscanf(fin,"%d%d",&n,&k);
    int crnr = 0;
    int irest =-1;
    int lrest =-1;
    for (int i=1;i<=n;i++)
    {
        if  (lrest !=-1)
        {
            if (irest !=-1)
                fprintf(fout,"%d ",irest);
            fprintf(fout,"%d ",lrest);
            for (int j=3;j<=n-1;j++)
            {
                crnr++;
                fprintf(fout,"%d ",crnr);
            }
        }
        else
        {
            if (((crnr +k)%2 != 0)&&(irest == -1))
            {
                irest =crnr+1;
                crnr=irest;
                for (int j=1;j<=n-1;j++)
                {
                    crnr++;
                    fprintf(fout,"%d ",crnr);
                }
            }
            else if (((crnr+k)%2 !=0)&&(irest != -1))
            {
                fprintf(fout,"%d ",irest);
                irest = -1;
                for (int j=2;j<=n-1;j++)
                {
                    crnr++;
                    fprintf(fout,"%d ",crnr);
                }
            }
            else
            {
                for (int j=1;j<=n-1;j++)
                {
                    crnr++;
                    fprintf(fout,"%d ",crnr);
                }
            }
        }
        crnr++; //number to print
        if ((i == n-1)&&
            ((((crnr+k) %2 !=0)&&(irest ==-1))||
            (((crnr+k) %2 == 0)&&(irest !=-1))))
        {
            lrest = crnr;
            fprintf(fout,"%d\n",n*n);
            //crnr--;//reset
        }
        else
        {
            fprintf(fout,"%d\n",crnr);
        }
    }
    fclose(fin);
    fclose(fout);
    return 0;
}