Cod sursa(job #880717)

Utilizator ionutz_cnnbIonutz cnnb ionutz_cnnb Data 17 februarie 2013 10:51:08
Problema Lacate Scor 100
Compilator cpp Status done
Runda Arhiva de probleme Marime 3.93 kb
/*#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    long n,k,i,m,p,p1;
    ifstream f("farfurii.in");
    ofstream g("farfurii.out");
    f>>n>>k;
    for(p=1;p<n;p*=2)
    {
        p1=p;
        for(m=0;p1>0;p1/=2)
        {
            if(m+p1<=n&&(m+p1)*(m+p1-1)<=2*k) m+=p1;
        }
    }
    k-=m*(m-1)/2;
    if(!k)
    {
        for(i=1;i<=n-m;i++) g<<i<<" ";
        for(i=n;i>n-m;i--) g<<i<<" ";
        g<<'\n';
    }
    else
    {
        k=m-k;
        m++;
        for(i=1;i<=n-m;i++)
        {
            g<<i<<" ";
        }
        g<<n-k<<" ";
        for(i=n;i>n-k;i--) g<<i<<" ";
        for(i=n-k-1;i>n-m;i--) g<<i<<" ";
        g<<'\n';
    }
    return 0;
}
*/
/*
#include <fstream>
#include <iostream>
#include <string.h>
using namespace std;

int main()
{
    char ret[1001];
    int i,j,n,cant=0,timp=0;
    ifstream f("farfurii.in"); //reteta
    ofstream g("farfurii.out");
    f.get(ret,1000);
    n=strlen(ret);
    for(i=0;i<n;i++)
    {
        if(ret[i]==')')
        {
            cant=0;
            i++;
            while(ret[i]==' ') i++;
            while(ret[i]>='0'&&ret[i]<='9')
            {
                cant=cant*10+ret[i]-'0';
                i++;
            }
            cout<<cant<<"\n";
            timp+=cant;
        }
    }
    g<<timp;
    cout<<timp;

}
*/
/*
#include <fstream>
#include <iostream>
using namespace std;

int main()
{
    int n,p[10],i,j,nr;
    long k,sol=0,t;
    ifstream f("farfurii.in");//prime1
    ofstream g("farfurii.out");
    f>>n;
    for(i=0;i<n;i++)
    {
        f>>p[i];
    }
    f>>k;
    for(i=1;i<(1<<n);i++)
    {
        for(t=k,nr=j=0;j<n;j++)
        {
            if(1&(1<<j))
            {
                t/=(long) p[j];
                nr++;
            }
        }
        if(nr%2==1) sol+=t;
        else sol-=t;
    }
    g<<sol;
    return 0;
}
*/
/*
#include<fstream>
#include <iostream>
#include<string.h>

using namespace std;

#define M 505
#define MOD 666013
#define lit 30

ifstream f("farfurii.in");//subsir
ofstream g("farfurii.out");

int n, m, c[M][M], d[M][M], ia[M][lit], ib[M][lit];

char a[M], b[M];

int maxim(int x, int y)
{
    if(x>y) return x;
    else return y;
}
void afis(int a[][M],int n)
{
    int i,j;
    for(i=0;i<n;i++)
    {
        for(j=0;j<n;j++)
            cout<<a[i][j]<<" ";
        cout<<"\n";
    }
}
int main()
{
    f >>a>>b;
    n = strlen(a);
    m = strlen(b);
    a[n++] = 0;
    b[m++] = 0;
    for(int i = 0; i < n; i++)
    {
        for(int j = 0; j < lit; j++)
            ia[i][j] = ia[i - 1][j];
        ia[i][a[i] - 'a'] = i;
    }
    for(int i = 0; i < m; i++)
    {
        for(int j = 0; j < lit; j++)
            ib[i][j] = ib[i - 1][j];
        ib[i][b[i] - 'a'] = i;
    }

    for(int i = 1; i <=  n; i++)
        for(int j = 1; j <= m; j++)
            if(a[i-1] == b[j-1])
                c[i][j] = c[i - 1][j - 1] + 1;
            else
                c[i][j] = maxim(c[i - 1][j], c[i][j - 1]);
afis(c,6);
    d[0][0] = 1;
    for(int i = 0; i < n; i++)
        for(int j = 0; j < m; j++)
        {
            if(c[i][j] == 1)
            {
                d[i][j] = 1;
            }
            for(int k = 0 ;k < lit; k++)
            {
                int ii = ia[i - 1][k];
                int jj = ib[j - 1][k];
                if(c[i][j] == c[ii][jj] + 1)
                {
                    d[i][j] += d[ii][jj];
                    d[i][j] %= MOD;
                }
            }
        }
    g << d[n][m];
    return 0;
}
*/
#include<fstream>

using namespace std;

int a[300][300],i,j,n,k;
int main()
{
    ifstream f("lacate.in");
    ofstream g("lacate.out");
    f>>n;
    g<<n*(n-1)/2 <<" "<<n-1;
    g<<'\n';
    k=0;
    for (i=1;i<=n;i++)
        for (j=i;j<n;j++)
        {
            k++;
            a[i][j]=k;
            a[j+1][i]=k;
        }
    for (i=1;i<=n;i++)
    {
        for (j=1;j<n;j++)
            g << a[i][j] << ' ';
        g << "\n";
    }
    return 0;
}