Submission #2240887


Source Code Expand

#include <bits/stdc++.h>

using namespace std;

using int64 = long long;

const int mod = 1e9 + 7;

int main() {
  int N, M;
  int S[200], T[200];
  vector< int > vs;

  cin >> N >> M;
  for(int i = 0; i < M; i++) {
    cin >> S[i] >> T[i];
    vs.emplace_back(S[i]);
    vs.emplace_back(T[i]);
  }
  vs.emplace_back(1);
  vs.emplace_back(N);
  sort(begin(vs), end(vs));
  vs.erase(unique(begin(vs), end(vs)), end(vs));
  for(int i = 0; i < M; i++) {
    S[i] = lower_bound(begin(vs), end(vs), S[i]) - begin(vs);
    T[i] = lower_bound(begin(vs), end(vs), T[i]) - begin(vs);
  }

  vector< int > ev[403];
  for(int i = 0; i < M; i++) {
    ev[S[i]].emplace_back(T[i]);
  }
  bool isex[403] = {};
  for(int i = 0; i < vs.size() - 1; i++) {
    isex[i] = (vs[i] + 1 == vs[i + 1]);
  }
  isex[vs.size() - 1] = true;

  vector< vector< int > > dp(vs.size() + 1, vector< int >(vs.size() + 1));
  dp[0][0] = 1; // i, j)までカバー済み
  for(int i = 0; i < vs.size(); i++) {
    for(auto &v : ev[i]) {
      int nxt = v + isex[v];
      auto dp2 = dp;
      for(int j = i; j <= vs.size(); j++) {
        for(int k = i; k <= vs.size(); k++) {
          if(nxt <= j && nxt <= k) {
            (dp2[j][k] += dp[j][k]) %= mod;
          } else if(j < nxt && k < nxt) {
            if(j > k) (dp2[j][nxt] += dp[j][k]) %= mod;
            else (dp2[nxt][k] += dp[j][k]) %= mod;
          } else if(nxt <= j) {
            (dp2[j][max(nxt, k)] += dp[j][k]) %= mod;
          } else {
            (dp2[max(nxt, j)][k] += dp[j][k]) %= mod;
          }
        }
      }
      dp.swap(dp2);
    }
  }
  cout << dp.back().back() << endl;
}

Submission Info

Submission Time
Task H - ダイヤグラム
User ei13333
Language C++14 (GCC 5.4.1)
Score 100
Code Size 1691 Byte
Status AC
Exec Time 83 ms
Memory 1580 KB

Judge Result

Set Name small medium large
Score / Max Score 10 / 10 40 / 40 50 / 50
Status
AC × 24
AC × 45
AC × 75
Set Name Test Cases
small small/case_000.txt, small/case_001.txt, small/case_002.txt, small/case_003.txt, small/case_004.txt, small/case_005.txt, small/case_006.txt, small/case_007.txt, small/case_008.txt, small/case_009.txt, small/case_010.txt, small/case_011.txt, small/case_012.txt, small/case_013.txt, small/case_014.txt, small/case_015.txt, small/case_016.txt, small/case_017.txt, small/case_018.txt, small/case_019.txt, small/case_020.txt, small/case_021.txt, small/case_022.txt, small/case_023.txt
medium medium/case_000.txt, medium/case_001.txt, medium/case_002.txt, medium/case_003.txt, medium/case_004.txt, medium/case_005.txt, medium/case_006.txt, medium/case_007.txt, medium/case_008.txt, medium/case_009.txt, medium/case_010.txt, medium/case_011.txt, medium/case_012.txt, medium/case_013.txt, medium/case_014.txt, medium/case_015.txt, medium/case_016.txt, medium/case_017.txt, medium/case_018.txt, medium/case_019.txt, medium/case_020.txt, medium/case_021.txt, medium/case_022.txt, medium/case_023.txt, medium/medium_case_000.txt, medium/medium_case_001.txt, medium/medium_case_002.txt, medium/medium_case_003.txt, medium/medium_case_004.txt, medium/medium_case_005.txt, medium/medium_case_006.txt, medium/medium_case_007.txt, medium/medium_case_008.txt, medium/medium_case_009.txt, medium/medium_case_010.txt, medium/medium_case_011.txt, medium/medium_case_012.txt, medium/medium_case_013.txt, medium/medium_case_014.txt, medium/medium_case_015.txt, medium/medium_case_016.txt, medium/medium_case_017.txt, medium/medium_case_018.txt, medium/medium_case_019.txt, medium/medium_case_020.txt
large large/case_000.txt, large/case_001.txt, large/case_002.txt, large/case_003.txt, large/case_004.txt, large/case_005.txt, large/case_006.txt, large/case_007.txt, large/case_008.txt, large/case_009.txt, large/case_010.txt, large/case_011.txt, large/case_012.txt, large/case_013.txt, large/case_014.txt, large/case_015.txt, large/case_016.txt, large/case_017.txt, large/case_018.txt, large/case_019.txt, large/case_020.txt, large/case_021.txt, large/case_022.txt, large/case_023.txt, large/large_case_000.txt, large/large_case_001.txt, large/large_case_002.txt, large/large_case_003.txt, large/large_case_004.txt, large/large_case_005.txt, large/large_case_006.txt, large/large_case_007.txt, large/large_case_008.txt, large/large_case_009.txt, large/large_case_010.txt, large/large_case_011.txt, large/large_case_012.txt, large/large_case_013.txt, large/large_case_014.txt, large/large_case_015.txt, large/large_case_016.txt, large/large_case_017.txt, large/large_case_018.txt, large/large_case_019.txt, large/large_case_020.txt, large/large_case_021.txt, large/large_case_022.txt, large/large_case_023.txt, large/large_case_024.txt, large/large_case_025.txt, large/large_case_026.txt, large/large_case_027.txt, large/large_case_028.txt, large/large_case_029.txt, large/medium_case_000.txt, large/medium_case_001.txt, large/medium_case_002.txt, large/medium_case_003.txt, large/medium_case_004.txt, large/medium_case_005.txt, large/medium_case_006.txt, large/medium_case_007.txt, large/medium_case_008.txt, large/medium_case_009.txt, large/medium_case_010.txt, large/medium_case_011.txt, large/medium_case_012.txt, large/medium_case_013.txt, large/medium_case_014.txt, large/medium_case_015.txt, large/medium_case_016.txt, large/medium_case_017.txt, large/medium_case_018.txt, large/medium_case_019.txt, large/medium_case_020.txt
Case Name Status Exec Time Memory
large/case_000.txt AC 1 ms 256 KB
large/case_001.txt AC 1 ms 256 KB
large/case_002.txt AC 1 ms 256 KB
large/case_003.txt AC 1 ms 256 KB
large/case_004.txt AC 1 ms 256 KB
large/case_005.txt AC 1 ms 256 KB
large/case_006.txt AC 1 ms 256 KB
large/case_007.txt AC 1 ms 256 KB
large/case_008.txt AC 1 ms 256 KB
large/case_009.txt AC 1 ms 256 KB
large/case_010.txt AC 1 ms 256 KB
large/case_011.txt AC 1 ms 256 KB
large/case_012.txt AC 1 ms 256 KB
large/case_013.txt AC 1 ms 256 KB
large/case_014.txt AC 1 ms 256 KB
large/case_015.txt AC 1 ms 256 KB
large/case_016.txt AC 1 ms 256 KB
large/case_017.txt AC 1 ms 256 KB
large/case_018.txt AC 1 ms 256 KB
large/case_019.txt AC 1 ms 256 KB
large/case_020.txt AC 1 ms 256 KB
large/case_021.txt AC 1 ms 256 KB
large/case_022.txt AC 1 ms 256 KB
large/case_023.txt AC 1 ms 256 KB
large/large_case_000.txt AC 81 ms 1580 KB
large/large_case_001.txt AC 78 ms 1556 KB
large/large_case_002.txt AC 74 ms 1504 KB
large/large_case_003.txt AC 75 ms 1524 KB
large/large_case_004.txt AC 80 ms 1552 KB
large/large_case_005.txt AC 82 ms 1552 KB
large/large_case_006.txt AC 83 ms 1580 KB
large/large_case_007.txt AC 78 ms 1488 KB
large/large_case_008.txt AC 75 ms 1488 KB
large/large_case_009.txt AC 78 ms 1552 KB
large/large_case_010.txt AC 16 ms 512 KB
large/large_case_011.txt AC 18 ms 580 KB
large/large_case_012.txt AC 18 ms 584 KB
large/large_case_013.txt AC 15 ms 512 KB
large/large_case_014.txt AC 15 ms 512 KB
large/large_case_015.txt AC 15 ms 512 KB
large/large_case_016.txt AC 15 ms 512 KB
large/large_case_017.txt AC 15 ms 512 KB
large/large_case_018.txt AC 15 ms 512 KB
large/large_case_019.txt AC 15 ms 512 KB
large/large_case_020.txt AC 78 ms 1556 KB
large/large_case_021.txt AC 81 ms 1552 KB
large/large_case_022.txt AC 78 ms 1544 KB
large/large_case_023.txt AC 80 ms 1528 KB
large/large_case_024.txt AC 80 ms 1556 KB
large/large_case_025.txt AC 79 ms 1576 KB
large/large_case_026.txt AC 78 ms 1552 KB
large/large_case_027.txt AC 79 ms 1544 KB
large/large_case_028.txt AC 81 ms 1524 KB
large/large_case_029.txt AC 78 ms 1544 KB
large/medium_case_000.txt AC 1 ms 256 KB
large/medium_case_001.txt AC 1 ms 256 KB
large/medium_case_002.txt AC 1 ms 256 KB
large/medium_case_003.txt AC 1 ms 256 KB
large/medium_case_004.txt AC 1 ms 256 KB
large/medium_case_005.txt AC 1 ms 256 KB
large/medium_case_006.txt AC 1 ms 256 KB
large/medium_case_007.txt AC 1 ms 256 KB
large/medium_case_008.txt AC 1 ms 256 KB
large/medium_case_009.txt AC 1 ms 256 KB
large/medium_case_010.txt AC 1 ms 256 KB
large/medium_case_011.txt AC 1 ms 256 KB
large/medium_case_012.txt AC 1 ms 256 KB
large/medium_case_013.txt AC 1 ms 256 KB
large/medium_case_014.txt AC 1 ms 256 KB
large/medium_case_015.txt AC 1 ms 256 KB
large/medium_case_016.txt AC 1 ms 256 KB
large/medium_case_017.txt AC 1 ms 256 KB
large/medium_case_018.txt AC 1 ms 256 KB
large/medium_case_019.txt AC 1 ms 256 KB
large/medium_case_020.txt AC 1 ms 256 KB
medium/case_000.txt AC 1 ms 256 KB
medium/case_001.txt AC 1 ms 256 KB
medium/case_002.txt AC 1 ms 256 KB
medium/case_003.txt AC 1 ms 256 KB
medium/case_004.txt AC 1 ms 256 KB
medium/case_005.txt AC 1 ms 256 KB
medium/case_006.txt AC 1 ms 256 KB
medium/case_007.txt AC 1 ms 256 KB
medium/case_008.txt AC 1 ms 256 KB
medium/case_009.txt AC 1 ms 256 KB
medium/case_010.txt AC 1 ms 256 KB
medium/case_011.txt AC 1 ms 256 KB
medium/case_012.txt AC 1 ms 256 KB
medium/case_013.txt AC 1 ms 256 KB
medium/case_014.txt AC 1 ms 256 KB
medium/case_015.txt AC 1 ms 256 KB
medium/case_016.txt AC 1 ms 256 KB
medium/case_017.txt AC 1 ms 256 KB
medium/case_018.txt AC 1 ms 256 KB
medium/case_019.txt AC 1 ms 256 KB
medium/case_020.txt AC 1 ms 256 KB
medium/case_021.txt AC 1 ms 256 KB
medium/case_022.txt AC 1 ms 256 KB
medium/case_023.txt AC 1 ms 256 KB
medium/medium_case_000.txt AC 1 ms 256 KB
medium/medium_case_001.txt AC 1 ms 256 KB
medium/medium_case_002.txt AC 1 ms 256 KB
medium/medium_case_003.txt AC 1 ms 256 KB
medium/medium_case_004.txt AC 1 ms 256 KB
medium/medium_case_005.txt AC 1 ms 256 KB
medium/medium_case_006.txt AC 1 ms 256 KB
medium/medium_case_007.txt AC 1 ms 256 KB
medium/medium_case_008.txt AC 1 ms 256 KB
medium/medium_case_009.txt AC 1 ms 256 KB
medium/medium_case_010.txt AC 1 ms 256 KB
medium/medium_case_011.txt AC 1 ms 256 KB
medium/medium_case_012.txt AC 1 ms 256 KB
medium/medium_case_013.txt AC 1 ms 256 KB
medium/medium_case_014.txt AC 1 ms 256 KB
medium/medium_case_015.txt AC 1 ms 256 KB
medium/medium_case_016.txt AC 1 ms 256 KB
medium/medium_case_017.txt AC 1 ms 256 KB
medium/medium_case_018.txt AC 1 ms 256 KB
medium/medium_case_019.txt AC 1 ms 256 KB
medium/medium_case_020.txt AC 1 ms 256 KB
small/case_000.txt AC 1 ms 256 KB
small/case_001.txt AC 1 ms 256 KB
small/case_002.txt AC 1 ms 256 KB
small/case_003.txt AC 1 ms 256 KB
small/case_004.txt AC 1 ms 256 KB
small/case_005.txt AC 1 ms 256 KB
small/case_006.txt AC 1 ms 256 KB
small/case_007.txt AC 1 ms 256 KB
small/case_008.txt AC 1 ms 256 KB
small/case_009.txt AC 1 ms 256 KB
small/case_010.txt AC 1 ms 256 KB
small/case_011.txt AC 1 ms 256 KB
small/case_012.txt AC 1 ms 256 KB
small/case_013.txt AC 1 ms 256 KB
small/case_014.txt AC 1 ms 256 KB
small/case_015.txt AC 1 ms 256 KB
small/case_016.txt AC 1 ms 256 KB
small/case_017.txt AC 1 ms 256 KB
small/case_018.txt AC 1 ms 256 KB
small/case_019.txt AC 1 ms 256 KB
small/case_020.txt AC 1 ms 256 KB
small/case_021.txt AC 1 ms 256 KB
small/case_022.txt AC 1 ms 256 KB
small/case_023.txt AC 1 ms 256 KB