Submission #1514495
Source Code Expand
#pragma region include #include <iostream> #include <iomanip> #include <stdio.h> #include <sstream> #include <algorithm> #include <cmath> #include <complex> #include <string> #include <cstring> #include <vector> #include <tuple> #include <bitset> #include <queue> #include <complex> #include <set> #include <map> #include <stack> #include <list> #include <fstream> #include <random> //#include <time.h> #include <ctime> #pragma endregion //#include ///////// #define REP(i, x, n) for(int i = x; i < n; ++i) #define rep(i,n) REP(i,0,n) #define ALL(X) X.begin(), X.end() ///////// #pragma region typedef typedef long long LL; typedef long double LD; typedef unsigned long long ULL; typedef std::pair<LL,LL> PLL;// typedef std::pair<int,int> PII;// #pragma endregion //typedef ////定数 const int INF = (int)1e9; const LL MOD = (LL)1e9+7; const LL LINF = (LL)1e18+20; const double PI = acos(-1.0); const double EPS = 1e-9; ///////// using namespace::std; void solve(){ int H; LL W; cin >> H >> W; if( W > 100000 ) return; int N; cin >> N; set< pair<LL,LL> > used; set< pair<LL,LL> >::iterator itr; pair<LL,LL> temp; temp.first = 0; temp.second = W+1; used.insert( temp ); temp.first = 1; used.insert( temp );//番兵 vector<LL> dp(4,0),next(4); dp[0] = 1; while(N--){ cin >> temp.first >> temp.second; temp.first--; itr = used.find( temp ); if( itr != used.end() ){//使用済みなので外す used.erase( itr ); }else{//未使用なのでつける used.insert( temp ); } dp.assign(4,0); dp[0] = 1; vector< vector<bool> > cap(2,vector<bool>(2,false)); temp.first = 0;temp.second = 1; if( used.find(temp) != used.end() ){cap[0][0] = true;} temp.first = 1; if( used.find(temp) != used.end() ){cap[0][1] = true;} for(LL i=1;i<=W;++i){ temp.first = 0; temp.second = i+1; itr = used.find( temp ); if( itr == used.end() ){ cap[0][1] = false; }else{ cap[0][1] = true; } temp.first = 1; itr = used.find( temp ); if( itr == used.end() ){ cap[1][1] = false; }else{ cap[1][1] = true; } ////// for(int k=0;k<4;++k){ if( dp[k] == 0 ) continue; next[0] = (next[0] + dp[k]) % MOD; int count = 0; if( (k&1)==0 && cap[0][0] == false && cap[0][1] == false ){ ++count; next[1] = (next[1] + dp[k]) % MOD;//上に横 } if( (k&2)==0 && cap[1][0] == false && cap[1][1] == false ){ ++count; next[2] = (next[2] + dp[k]) % MOD;//下に横 } if( count == 2 ){ next[3] = (next[3] + dp[k]) % MOD;//上下に横 } if( k==0 && cap[0][0] == false && cap[1][0] == false ){ next[0] = (next[0] + dp[k]) % MOD;//縦 } } dp = next; next.assign(4,0); cap[0][0] = cap[0][1]; cap[1][0] = cap[1][1]; } LL ans = dp[0]; cout << ans << endl; } } #pragma region main signed main(void){ std::cin.tie(0); std::ios::sync_with_stdio(false); std::cout << std::fixed;//小数を10進数表示 cout << setprecision(16);//小数点以下の桁数を指定//coutとcerrで別 solve(); } #pragma endregion //main()
Submission Info
Submission Time | |
---|---|
Task | D - コンセント |
User | akarin55 |
Language | C++14 (GCC 5.4.1) |
Score | 0 |
Code Size | 3215 Byte |
Status | WA |
Exec Time | 10503 ms |
Memory | 384 KB |
Judge Result
Set Name | Sample | Subtask1 | Subtask2 | Subtask3 | ||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
Score / Max Score | 0 / 0 | 0 / 10 | 0 / 30 | 0 / 60 | ||||||||||||||||||
Status |
|
|
|
|
Set Name | Test Cases |
---|---|
Sample | subtask0_sample-01.txt, subtask0_sample-02.txt |
Subtask1 | subtask0_sample-01.txt, subtask0_sample-02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt |
Subtask2 | subtask0_sample-01.txt, subtask0_sample-02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt |
Subtask3 | subtask0_sample-01.txt, subtask0_sample-02.txt, subtask1_01.txt, subtask1_02.txt, subtask1_03.txt, subtask1_04.txt, subtask1_05.txt, subtask1_06.txt, subtask1_07.txt, subtask1_08.txt, subtask1_09.txt, subtask1_10.txt, subtask2_01.txt, subtask2_02.txt, subtask2_03.txt, subtask2_04.txt, subtask2_05.txt, subtask2_06.txt, subtask2_07.txt, subtask2_08.txt, subtask2_09.txt, subtask2_10.txt, subtask3_01.txt, subtask3_02.txt, subtask3_03.txt, subtask3_04.txt, subtask3_05.txt, subtask3_06.txt, subtask3_07.txt, subtask3_08.txt, subtask3_09.txt, subtask3_10.txt |
Case Name | Status | Exec Time | Memory |
---|---|---|---|
subtask0_sample-01.txt | AC | 1 ms | 256 KB |
subtask0_sample-02.txt | AC | 1 ms | 256 KB |
subtask1_01.txt | AC | 1 ms | 256 KB |
subtask1_02.txt | AC | 1 ms | 256 KB |
subtask1_03.txt | AC | 2 ms | 256 KB |
subtask1_04.txt | WA | 32 ms | 256 KB |
subtask1_05.txt | AC | 1168 ms | 384 KB |
subtask1_06.txt | AC | 1270 ms | 384 KB |
subtask1_07.txt | WA | 964 ms | 384 KB |
subtask1_08.txt | AC | 1455 ms | 384 KB |
subtask1_09.txt | AC | 1452 ms | 384 KB |
subtask1_10.txt | AC | 1448 ms | 384 KB |
subtask2_01.txt | AC | 819 ms | 384 KB |
subtask2_02.txt | TLE | 10503 ms | 384 KB |
subtask2_03.txt | WA | 42 ms | 256 KB |
subtask2_04.txt | WA | 6498 ms | 384 KB |
subtask2_05.txt | TLE | 10503 ms | 384 KB |
subtask2_06.txt | TLE | 10503 ms | 384 KB |
subtask2_07.txt | TLE | 10503 ms | 384 KB |
subtask2_08.txt | TLE | 10503 ms | 384 KB |
subtask2_09.txt | TLE | 10503 ms | 384 KB |
subtask2_10.txt | TLE | 10503 ms | 384 KB |
subtask3_01.txt | WA | 1 ms | 256 KB |
subtask3_02.txt | WA | 1 ms | 256 KB |
subtask3_03.txt | WA | 1 ms | 256 KB |
subtask3_04.txt | WA | 1 ms | 256 KB |
subtask3_05.txt | WA | 1 ms | 256 KB |
subtask3_06.txt | WA | 1 ms | 256 KB |
subtask3_07.txt | WA | 1 ms | 256 KB |
subtask3_08.txt | WA | 1 ms | 256 KB |
subtask3_09.txt | WA | 1 ms | 256 KB |
subtask3_10.txt | WA | 1 ms | 256 KB |