結果

問題 No.1156 Nada Picnic 2
ユーザー face4face4
提出日時 2020-08-12 10:25:46
言語 C++14
(gcc 12.3.0 + boost 1.83.0)
結果
AC  
実行時間 30 ms / 2,000 ms
コード長 1,093 bytes
コンパイル時間 743 ms
コンパイル使用メモリ 74,940 KB
実行使用メモリ 5,376 KB
最終ジャッジ日時 2024-04-18 00:17:42
合計ジャッジ時間 1,348 ms
ジャッジサーバーID
(参考情報)
judge4 / judge3
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 6 ms
5,248 KB
testcase_01 AC 10 ms
5,376 KB
testcase_02 AC 30 ms
5,376 KB
権限があれば一括ダウンロードができます

ソースコード

diff #

#include<iostream>
#include<vector>
#include<algorithm>
#include<numeric>
using namespace std;

int main(){
    int n;
    cin >> n;
    n--;
    vector<int> v(10);
    iota(v.begin(), v.end(), 0);
    int x[3][10] = {
        {100, 10-1001, 1-10, 100, 10, 1, -100, 0, 0, 0},
        {1100, 10-100, 1-10, 1000, 100, 10, 1, -10000, -1000, -1},
        {100000, 10000-100000, 1000, 1100-10010, 10-100, 101, 10000, 10, 1, -1001}
    };
    int y[3][10] = {
        {0,1001,10,0,0,0,100,0,0,0},
        {0,100,10,0,0,0,0,10000,1000,1},
        {0,100000,0,10010,100,0,0,0,0,1001}
    };
    vector<int> ng[3];
    ng[0] = {0, 1, 3};
    ng[1] = {0, 3, 7};
    ng[2] = {0, 1, 6};
    swap(v[0], v[1]);   // needless.
    do{
        int sum = 0;
        for(int i = 0; i < 10; i++) sum += v[i]*x[n][i];
        if(sum) continue;
        bool f = false;
        for(int i : ng[n]){
            f |= v[i]==0;
        }
        if(f)   continue;
        for(int i = 0; i < 10; i++) sum += v[i]*y[n][i];
        cout << sum << endl;
        return 0;
    }while(next_permutation(v.begin(), v.end()));
}
0