結果

問題 No.774 tatyamと素数大富豪
ユーザー tatyamtatyam
提出日時 2018-09-11 23:55:02
言語 C++17
(gcc 12.3.0 + boost 1.83.0)
結果
TLE  
実行時間 -
コード長 1,281 bytes
コンパイル時間 2,373 ms
コンパイル使用メモリ 211,172 KB
実行使用メモリ 15,604 KB
最終ジャッジ日時 2024-06-24 12:25:10
合計ジャッジ時間 11,152 ms
ジャッジサーバーID
(参考情報)
judge4 / judge1
このコードへのチャレンジ
(要ログイン)

テストケース

テストケース表示
入力 結果 実行時間
実行使用メモリ
testcase_00 AC 53 ms
15,604 KB
testcase_01 AC 2 ms
6,940 KB
testcase_02 AC 32 ms
8,276 KB
testcase_03 AC 3 ms
6,940 KB
testcase_04 AC 2 ms
6,940 KB
testcase_05 AC 3 ms
6,944 KB
testcase_06 AC 2 ms
6,944 KB
testcase_07 AC 2 ms
6,944 KB
testcase_08 AC 2 ms
6,944 KB
testcase_09 AC 39 ms
8,024 KB
testcase_10 AC 1,729 ms
7,764 KB
testcase_11 AC 1,427 ms
7,636 KB
testcase_12 AC 45 ms
7,768 KB
testcase_13 AC 52 ms
8,020 KB
testcase_14 AC 7 ms
6,940 KB
testcase_15 AC 1,576 ms
8,280 KB
testcase_16 AC 39 ms
8,792 KB
testcase_17 AC 50 ms
8,280 KB
testcase_18 TLE -
権限があれば一括ダウンロードができます

ソースコード

diff #

#include "bits/stdc++.h"
using namespace std;
typedef long long ll;
#define rep(i,l,r) for(int i=(l);i<(r);i++)
#define fcout cout << fixed << setprecision(10)

vector<int> card;
vector<ll> permlist;

bool is_prime(ll n){
    if (n < 2) return false;
    if (n < 4) return true;
    if (!(n % 2)) return false;
    if (!(n % 3)) return false;
    ll sq = sqrt(n);
    for(int i = 5 ;i <= sq; i += 4 - i % 6 / 2){
        if (sq < i) return true;
        if (!(n % i)) return false;
    }
    return true;
}
ll putBack(ll a, int b){
    return a * (b < 10 ? 10 : 100) + b;
}
vector<int> erase(vector<int> v,int pos){
    v.erase(v.begin()+pos);
    return v;
}
void permutations(vector<int> v,ll cnt){
    if(v.size()==1){
        permlist.push_back(putBack(cnt, v[0]));
        return;
    }
    rep(i,0,v.size()){
        permutations(erase(v,i), putBack(cnt, v[i]));
    }
}
int main(){
    int n,a;
    cin >> n;
    card.reserve(n);
    rep(i, 0, n){
        cin >> a;
        card.push_back(a);
    }
    permlist.push_back(0);
    permutations(card,0);
    sort(permlist.begin()+1, permlist.end(), greater<ll>());
    rep(i,1,permlist.size())if(permlist[i-1]!=permlist[i]&&is_prime(permlist[i])){
        cout<<permlist[i]<<endl;
        return 0;
    }
    cout<<-1<<endl;
}
0