Submission #4007438


Source Code Expand

Copy
#include <bits/stdc++.h>
#define fi first
#define se second
#define rep(i,n) for(int i = 0; i < (n); ++i)
#define rrep(i,n) for(int i = 1; i <= (n); ++i)
#define drep(i,n) for(int i = (n)-1; i >= 0; --i)
#define srep(i,s,t) for (int i = s; i < t; ++i)
#define rng(a) a.begin(),a.end()
#define maxs(x,y) (x = max(x,y))
#define mins(x,y) (x = min(x,y))
#define limit(x,l,r) max(l,min(x,r))
#define lims(x,l,r) (x = max(l,min(x,r)))
#define isin(x,l,r) ((l) <= (x) && (x) < (r))
#define pb push_back
#define sz(x) (int)(x).size()
#define pcnt __builtin_popcountll
#define uni(x) x.erase(unique(rng(x)),x.end())
#define snuke srand((unsigned)clock()+(unsigned)time(NULL));
#define show(x) cout<<#x<<" = "<<x<<endl;
#define PQ(T) priority_queue<T,v(T),greater<T> >
#define bn(x) ((1<<x)-1)
#define dup(x,y) (((x)+(y)-1)/(y))
#define newline puts("")
#define v(T) vector<T>
#define vv(T) v(v(T))
using namespace std;
typedef long long int ll;
typedef unsigned uint;
typedef unsigned long long ull;
typedef pair<int,int> P;
typedef vector<int> vi;
typedef vector<vi> vvi;
typedef vector<ll> vl;
typedef vector<P> vp;
inline int in() { int x; scanf("%d",&x); return x;}
template<typename T>inline istream& operator>>(istream&i,v(T)&v)
{rep(j,sz(v))i>>v[j];return i;}
template<typename T>string join(const v(T)&v)
{stringstream s;rep(i,sz(v))s<<' '<<v[i];return s.str().substr(1);}
template<typename T>inline ostream& operator<<(ostream&o,const v(T)&v)
{if(sz(v))o<<join(v);return o;}
template<typename T1,typename T2>inline istream& operator>>(istream&i,pair<T1,T2>&v)
{return i>>v.fi>>v.se;}
template<typename T1,typename T2>inline ostream& operator<<(ostream&o,const pair<T1,T2>&v)
{return o<<v.fi<<","<<v.se;}
template<typename T>inline ll suma(const v(T)& a) { ll res(0); for (auto&& x : a) res += x; return res;}
const double eps = 1e-10;
const ll LINF = 1001002003004005006ll;
const int INF = 1001001001;
#define dame { puts("-1"); return 0;}
#define yn {puts("Yes");}else{puts("No");}
const int MX = 200005;

    // 整数スキャン(複数)
    /*
    int x;
    scanf("%d",&x);
    int y;
    scanf("%d",&y);
    int z;
    scanf("%d",&z);

    // n個の整数のスキャン
    /*
    ll a[n] = {};
    rep(i,n){
        scanf("%lld",&a[i]);
    }
    */

    // 文字列スキャン
    /*
    string s;
    cin >> s;
    */

    // n個の文字列スキャン
    /*
    vector<string> slist;
    rep(i,n){
        string s;
        cin >> s;
        slist.push_back(s);
    }
    */

int main() {
    int n;
    scanf("%d",&n);
    int m;
    scanf("%d",&m);
    int a[n+1] = {};
    rep(i,n){
        scanf("%d",&a[i]);
    }
    int b[m+1] = {};
    rep(j,m){
        scanf("%d",&b[j]);
    }
    sort(a,a+n, greater<int>());
    sort(b,b+m, greater<int>());
    int nn = 0;
    int mm = 0;
    int count = 0;
    ll ans = 1;
    if(a[1]==n*m||b[1]==n*m){
        cout << 0;
        return 0;
    }
    drep(i,n*m+1){
        if(i==0){
            break;
        }
        if(a[nn+1]>i||b[mm+1]>i){
            cout << 0;
            return 0;
        }
        if(a[nn+1]==i){
            nn++;
        }
        if(b[mm+1]==i){
            mm++;
        }
        if(a[nn]==i&&b[mm]==i){
            ans*=1;
        }else if(a[nn]==i){
            ans*=(mm+1);
        }else if(b[mm]==i){
            ans*=(nn+1);
        }else{
            ans*=((nn+1)*(mm+1)-count);
        }
        count++;
        if(ans>1000000007){
            ans%=1000000007;
        }
    }

    
    cout << ans << endl;
    return 0;
}
 
 

Submission Info

Submission Time
Task D - Double Landscape
User Shibuyap
Language C++14 (GCC 5.4.1)
Score 0
Code Size 3682 Byte
Status
Exec Time 6 ms
Memory 256 KB

Compile Error

./Main.cpp: In function ‘int main()’:
./Main.cpp:89:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&n);
                   ^
./Main.cpp:91:19: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
     scanf("%d",&m);
                   ^
./Main.cpp:94:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&a[i]);
                          ^
./Main.cpp:98:26: warning: ignoring return value of ‘int scanf(const char*, ...)’, declared with attribute warn_unused_result [-Wunused-result]
         scanf("%d",&b[j]);
                          ^

Test Cases

Set Name Score / Max Score Test Cases
Sample 0 / 0 s1.txt, s2.txt, s3.txt, s4.txt
All 0 / 500 01.txt, 02.txt, 03.txt, 04.txt, 05.txt, 06.txt, 07.txt, 08.txt, 09.txt, 10.txt, 11.txt, 12.txt, 13.txt, 14.txt, 15.txt, 16.txt, 17.txt, 18.txt, 19.txt, 20.txt, 21.txt, 22.txt, 23.txt, 24.txt, 25.txt, 26.txt, 27.txt, 28.txt, 29.txt, 30.txt, s1.txt, s2.txt, s3.txt, s4.txt
Case Name Status Exec Time Memory
01.txt 5 ms 256 KB
02.txt 5 ms 256 KB
03.txt 5 ms 256 KB
04.txt 5 ms 256 KB
05.txt 6 ms 256 KB
06.txt 5 ms 256 KB
07.txt 5 ms 256 KB
08.txt 5 ms 256 KB
09.txt 5 ms 256 KB
10.txt 5 ms 256 KB
11.txt 5 ms 256 KB
12.txt 6 ms 256 KB
13.txt 5 ms 256 KB
14.txt 5 ms 256 KB
15.txt 5 ms 256 KB
16.txt 5 ms 256 KB
17.txt 6 ms 256 KB
18.txt 6 ms 256 KB
19.txt 6 ms 256 KB
20.txt 6 ms 256 KB
21.txt 6 ms 256 KB
22.txt 6 ms 256 KB
23.txt 6 ms 256 KB
24.txt 6 ms 256 KB
25.txt 6 ms 256 KB
26.txt 6 ms 256 KB
27.txt 6 ms 256 KB
28.txt 6 ms 256 KB
29.txt 6 ms 256 KB
30.txt 6 ms 256 KB
s1.txt 1 ms 256 KB
s2.txt 1 ms 256 KB
s3.txt 1 ms 256 KB
s4.txt 1 ms 256 KB