Submission #111231

# Submission time Handle Problem Language Result Execution time Memory
111231 2019-05-14T10:57:21 Z tictaccat Boat (APIO16_boat) C++14
0 / 100
5 ms 768 KB
#include <bits/stdc++.h>

using namespace std;

#define int long long

const int MAX = 1000 + 5;
const int MOD = 1e9 + 7;
const int INV2 = 5e8 + 4;

int N,ans;
vector<int> a(MAX), b(MAX), ways(2*MAX), newWays(2*MAX), bin; //ways[i] = ways of ending between bin[i] and bin[i+1]-1
vector<vector<int>> Z(MAX);
vector<int> invs(MAX,-1);

int exp(int a, int e) {
    if (e == 0) return 1;
    if (e%2 == 1) return a * exp(a,e-1) % MOD;
    int temp = exp(a,e/2);
    return temp * temp % MOD;
}

int inv(int a) {
    if (invs[a] != -1) return invs[a];
    return invs[a] = exp(a,MOD-2);
}

int choose(int n, int k) {
    int N = 1, D = 1;
    for (int i = 0; i < k; i++) {
        N *= (n-i);
        N %= MOD;
        D *= i+1;
        D %= MOD;
    }
    return N * inv(D) % MOD;
}

int calc(int sz, vector<int> &z) {
    assert(z.size());
    int res = 0;
    for (int i = 1; i <= z.size(); i++) {
        res += choose(sz+i-1,i) * z[z.size()-i] % MOD;
        res %= MOD;
    }
    return res;
}

main() {

    cin >> N;

    for (int i = 0; i < N; i++) {
        cin >> a[i] >> b[i];
        b[i]++;
        bin.push_back(a[i]);
        bin.push_back(b[i]);
    }

    sort(bin.begin(),bin.end());
    bin.erase(unique(bin.begin(),bin.end()),bin.end());

    for (int i = 0; i < N; i++) {
        int pre = 1, k = 0; 
        for (; bin[k] < a[i]; k++) {pre += ways[k]; pre %= MOD;}
        for (; k+1 < bin.size() && bin[k+1] <= b[i]; k++) {
            int sz = bin[k+1] - bin[k];
            Z[k].push_back(pre);
            newWays[k] = calc(sz,Z[k]);
            pre += ways[k];
            pre %= MOD;
        }
        ways = newWays;
    }


    for (int k = 0; k < bin.size()-1; k++) {ans += ways[k]; ans %= MOD;}

    cout << (ans < 0 ? ans + MOD : ans) << "\n";

    return 0;
}

Compilation message

boat.cpp: In function 'long long int calc(long long int, std::vector<long long int>&)':
boat.cpp:42:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int i = 1; i <= z.size(); i++) {
                     ~~^~~~~~~~~~~
boat.cpp: At global scope:
boat.cpp:49:6: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
 main() {
      ^
boat.cpp: In function 'int main()':
boat.cpp:66:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         for (; k+1 < bin.size() && bin[k+1] <= b[i]; k++) {
                ~~~~^~~~~~~~~~~~
boat.cpp:77:23: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for (int k = 0; k < bin.size()-1; k++) {ans += ways[k]; ans %= MOD;}
                     ~~^~~~~~~~~~~~~~
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 512 KB Output is correct
3 Correct 4 ms 356 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 4 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 512 KB Output is correct
10 Correct 4 ms 384 KB Output is correct
11 Correct 4 ms 384 KB Output is correct
12 Correct 4 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
16 Runtime error 4 ms 640 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 512 KB Output is correct
3 Correct 4 ms 356 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 4 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 512 KB Output is correct
10 Correct 4 ms 384 KB Output is correct
11 Correct 4 ms 384 KB Output is correct
12 Correct 4 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
16 Runtime error 4 ms 640 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 4 ms 768 KB Execution killed with signal 11 (could be triggered by violating memory limits)
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 5 ms 384 KB Output is correct
2 Correct 5 ms 512 KB Output is correct
3 Correct 4 ms 356 KB Output is correct
4 Correct 4 ms 384 KB Output is correct
5 Correct 4 ms 384 KB Output is correct
6 Correct 4 ms 384 KB Output is correct
7 Correct 5 ms 384 KB Output is correct
8 Correct 5 ms 384 KB Output is correct
9 Correct 5 ms 512 KB Output is correct
10 Correct 4 ms 384 KB Output is correct
11 Correct 4 ms 384 KB Output is correct
12 Correct 4 ms 384 KB Output is correct
13 Correct 5 ms 384 KB Output is correct
14 Correct 5 ms 384 KB Output is correct
15 Correct 5 ms 384 KB Output is correct
16 Runtime error 4 ms 640 KB Execution killed with signal 11 (could be triggered by violating memory limits)
17 Halted 0 ms 0 KB -