Submission #1027964

#TimeUsernameProblemLanguageResultExecution timeMemory
1027964OtalpFlooding Wall (BOI24_wall)C++14
25 / 100
2444 ms791248 KiB
#include<bits/stdc++.h>
using namespace std;
#define ll long long
#define pii pair<int, int>
#define pb push_back
#define ff first
#define ss second

const ll mod = 1e9 + 7;

ll dd[500100];
ll a[500100][2];
ll dp[200100];
int ds[10001][20001];
ll st[500100];
ll ans = 0;
int n;




void solve(){
    cin>>n;
    vector<ll> d;
    for(int k=0; k<2; k++){
        for(int i=1; i<=n ; i++){
            cin>>a[i][k];
            d.pb(a[i][k]);
        }
    }
    st[0] = 1;
    for(int i=1; i<=n; i++){
        st[i] = st[i-1] * 2 % mod;
    }
    sort(d.begin(), d.end());
    for(int i=0; i<d.size(); i++) ds[n+1][i] = 0, dd[i] = 1;
    for(int i=n; i>=1; i--){
        for(int j=1; j<d.size(); j++){
            int asd = 0;
            for(int k=0; k<2; k++){
                if(a[i][k] < d[j]){
                    asd ++;
                }
            }
            dd[j] = dd[j] * asd % mod;
            ds[i][j] = (st[n-i+1] - dd[j] + mod) % mod;
        }
    }
    //cout<<"asdasdasd\n";
    //for(int i=1; i<=n; i++){
    //    for(int j=0; j<d.size(); j++){
    //        cout<<ds[i][j]<<' ';
    //    }
    //    cout<<'\n';
    //}
    ll ans = 0;
    for(int i=0; i<d.size(); i++) dp[i] = 0, dd[i] = 1;
    for(int i=1; i<=n; i++){
        for(int j=1; j<d.size(); j++){
            int asd = 0;
            for(int k=0; k<2; k++){
                if(a[i][k] < d[j]){
                    asd ++;
                    //cout<<i<<' '<<d[j]<<' '<<a[i][k]<<' '<<dp[j] * (ds[i+1][j]) % mod * (d[j] - d[j-1]) % mod<<'\n';
                    ans = (ans + dp[j] * ds[i+1][j] % mod * (d[j] - d[j-1]) % mod) % mod;
                }
            }
            dd[j] = dd[j] * asd % mod;
            dp[j] = (st[i] - dd[j] + mod) % mod;
        }
    }
    cout<<ans;

    



        
        

                    
                
            

        

}

signed main(){
    solve();
}

Compilation message (stderr)

Main.cpp: In function 'void solve()':
Main.cpp:36:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   36 |     for(int i=0; i<d.size(); i++) ds[n+1][i] = 0, dd[i] = 1;
      |                  ~^~~~~~~~~
Main.cpp:38:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   38 |         for(int j=1; j<d.size(); j++){
      |                      ~^~~~~~~~~
Main.cpp:57:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   57 |     for(int i=0; i<d.size(); i++) dp[i] = 0, dd[i] = 1;
      |                  ~^~~~~~~~~
Main.cpp:59:23: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<long long int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   59 |         for(int j=1; j<d.size(); j++){
      |                      ~^~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...