Submission #1798049


Source Code Expand

#include<bits/stdc++.h>
#define vi vector<int>
#define vvi vector<vector<int> >
#define vl vector<ll>
#define vvl vector<vector<ll>>
#define vb vector<bool>
#define vc vector<char>
#define vs vector<string>
using ll = long long;
using ld =long double;
#define int ll
#define INF 1e9
#define EPS 0.0000000001
#define rep(i,n) for(int i=0;i<n;i++)
#define loop(i,s,n) for(int i=s;i<n;i++)
#define all(in) in.begin(), in.end()
template<class T, class S> void cmin(T &a, const S &b) { if (a > b)a = b; }
template<class T, class S> void cmax(T &a, const S &b) { if (a < b)a = b; }
#define MAX 9999999
using namespace std;
typedef pair<int, int> pii;
typedef pair<int,pii> piii;
#define mp make_pair
class unionfind {
    vector<int> par, rank, size_;//速度ではなくメモリ効率を考えるならrankのかわりにsizeを使う
public:
    unionfind(int n) :par(n), rank(n), size_(n, 1) {
        iota(all(par), 0);
    }
    int find(int x) {
        if (par[x] == x)return x;
        return par[x] = find(par[x]);
    }
    void unite(int x, int y) {
        x = find(x), y = find(y);
        if (x == y)return;
        if (rank[x] < rank[y])swap(x, y);
        par[y] = x;
        size_[x] += size_[y];
        if (rank[x] == rank[y])rank[x]++;
    }
    bool same(int x, int y) {
        return find(x) == find(y);
    }
    int size(int x) {
        return size_[find(x)];
    }
};

signed main(){
    int n;
    cin>>n;
    unionfind uni(1000);
    string s,u;
    cin>>s;
    cin>>u;
    map<char,char>Mp;
    rep(i,s.size()){
        uni.unite(s[i],u[i]);
        if('9'<s[i]&&'9'<u[i]){
        }else {
            if(('0'<=s[i] &&  s[i] <='9') ||('0' <= u[i] &&  u[i] <= '9')){
                Mp[max(s[i],u[i])]=min(s[i],u[i]);
            }
        }
    }
    int ans=INF;
    rep(i,s.size()){
        bool flag=true;
        if(s[i]-'0'<=9)continue;
        for(auto itr:Mp){
            if(uni.same(itr.first,s[i]))flag=false;
        }
        if(flag){
            if(ans==INF)ans=1;
            ans*=(10-(i?0:1));
            Mp[s[i]]++;
        }
    }
    cout<<max((ans==INF?0:ans),1)<<endl;
}

Submission Info

Submission Time
Task B - 大事な数なのでZ回書きまLた。
User yebityon
Language C++14 (GCC 5.4.1)
Score 0
Code Size 2201 Byte
Status CE

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:80:33: error: no matching function for call to ‘max(long long int, int)’
     cout<<max((ans==INF?0:ans),1)<<endl;
                                 ^
In file included from /usr/include/c++/5/bits/char_traits.h:39:0,
                 from /usr/include/c++/5/ios:40,
                 from /usr/include/c++/5/istream:38,
                 from /usr/include/c++/5/sstream:38,
                 from /usr/include/c++/5/complex:45,
                 from /usr/include/c++/5/ccomplex:38,
                 from /usr/include/x86_64-linux-gnu/c++/5/bits/stdc++.h:52,
                 from ./Main.cpp:1:
/usr/include/c++/5/bits/stl_algobase.h:219:5: note: candidate: template<class _Tp> constexpr const _Tp& std::max(const _Tp&, const _Tp&)
     max(const _Tp& __a, const _Tp& __b)
     ^
/usr/include/c++/5/bits/stl_algobase.h:219:5: note:   template argument deduction/substitution failed:
./Main.cpp:80:33: note:   deduced conflicting types for parameter ‘const _Tp’ (‘long long int’ a...