답안 #242557

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
242557 2020-06-28T08:13:24 Z NONAME Prosjecni (COCI16_prosjecni) C++14
120 / 120
6 ms 512 KB
#include <bits/stdc++.h>
using namespace std;
using ll = long long;
using ld = long double;

ll a[101][101];

//void solve(ll n) {
    //ll n;
    //cin >> n;
    //if (n == 2) {
        //cout << n << " 0\n";
        //return;
    //}
    //ll sum = n * (n - 1) / 2;
    //for (int i = 0; i < n - 1; ++i)
        //a[0][i] = i + 1;
    //a[0][n - 1] = sum;

    //if (n & 1) {
        //ll cur = 1;
        //for (int i = 0; i < n; ++i)
        //for (int j = 0; j < n; ++j)
            //a[i][j] = cur++;
    //} else {
        //for (int i = 1; i < n - 1; ++i)
        //for (int j = 0; j < n; ++j)
            //a[i][j] = a[i - 1][j] + sum;

        //for (int j = 0; j < n; ++j) {
            //ll cur = 0;

            //for (int i = 0; i < n - 1; ++i)
                //cur += a[i][j];

            //if (cur % n == 0) {
                //a[n - 1][j] = cur;
                //continue;
            //}

            //ll need = n - (cur % n);

            //cur = (cur - (cur % n)) + need;
            //a[n - 1][j] = cur;
        //}
    //}

    //bool f = 1;

    //for (int i = 0; i < n; ++i) {
        //ll cur = 0;
        //for (int j = 0; j < n; ++j)
            //cur += a[i][j];

        //if (cur % n != 0)
            //f = 0;
    //}

    //for (int j = 0; j < n; ++j) {
        //ll cur = 0;
        //for (int i = 0; i < n; ++i)
            //cur += a[i][j];

        //if (cur % n != 0)
            //f = 0;
    //}

    //set <ll> s;

    //for (int i = 0; i < n; ++i)
    //for (int j = 0; j < n; ++j)
        //s.insert(a[i][j]);

    //if (int(s.size()) != n * n)
        //f = 0;

    //for (int i = 0; i < n; ++i)
    //for (int j = 0; j < n; ++j)
        //f &= (a[i][j] > 0 && a[i][j] < int(1e9));

    //cout << n << " " << f << "\n";
//}

int main() {
    ios_base::sync_with_stdio(0); cin.tie(0); cout.tie(0);

    //for (int i = 2; i <= 100; ++i)
        //solve(i);

    ll n;
    cin >> n;
    if (n == 2) {
        cout << "-1\n";
        return 0;
    }
    ll sum = n * (n - 1) / 2;
    for (int i = 0; i < n - 1; ++i)
        a[0][i] = i + 1;
    a[0][n - 1] = sum;

    for (int i = 1; i < n - 1; ++i)
    for (int j = 0; j < n; ++j)
        a[i][j] = a[i - 1][j] + sum;

    for (int j = 0; j < n; ++j) {
        ll cur = 0;

        for (int i = 0; i < n - 1; ++i)
            cur += a[i][j];

        a[n - 1][j] = n * a[n - 2][j] - cur;
    }

    //for (int i = 0; i < n; ++i) {
        //ll cur = 0;
        //for (int j = 0; j < n; ++j)
            //cur += a[i][j];

        //if (cur % n != 0) {
            //cout << "-1\n";
            //return 0;
        //}
    //}

    //for (int j = 0; j < n; ++j) {
        //ll cur = 0;
        //for (int i = 0; i < n; ++i)
            //cur += a[i][j];

        //if (cur % n != 0) {
            //cout << "-1\n";
            //return 0;
        //}
    //}

    //bool f = 1;

    for (int i = 0; i < n; ++i, cout << "\n")
    for (int j = 0; j < n; ++j)
        cout << a[i][j]/* % n*/ << " "/*, f &= (a[i][j] > 0 && a[i][j] < int(1e9))*/;

    //cout << f << "\n";
}
# 결과 실행 시간 메모리 Grader output
1 Correct 4 ms 384 KB Output is correct
2 Correct 4 ms 384 KB Output is correct
3 Correct 4 ms 384 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 5 ms 384 KB Output is correct
6 Correct 5 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 512 KB Output is correct
9 Correct 6 ms 512 KB Output is correct
10 Correct 5 ms 512 KB Output is correct