Submission #165397

#TimeUsernameProblemLanguageResultExecution timeMemory
165397sansJetpack (COCI16_jetpack)C++14
0 / 80
27 ms1784 KiB
#include <iostream> #include <numeric> #include <cmath> #include <algorithm> #include <vector> using namespace std; #define sp ' ' #define st first #define nd second #define pb push_back #define mp make_pair #define forn(YY, yy) for(long long int yy = 0; yy < YY; ++yy) #define prn(XX) cout << XX << endl #define prs(XX) cout << XX << " " typedef long long int ll; typedef unsigned long long int ull; typedef vector<ll> vll; typedef vector<vector<ll>> vvll; typedef pair<ll, ll> pll; typedef vector<pll> vpll; const int MOD = 1e9 + 7; const int INF = 2e9 + 13; const int mINF = -2e9 - 13; const double PI = 3.14159265358979; const double EPS = 1e-9; #define UC 1 #define DUS 2 #define YURU 3 #define TAVAN 4 vector<vector<bool>> field; int N; vector<pair<int, int>> ans; bool oldu = false; void simulate(int r, int c, int t, int x, int Mode, int timer){ if(field[r][c]) return; //cout << r << sp << c << sp << (Mode == 3 ? "YURU" : (Mode == 1 ? "UC" : "DUS")) << endl; if(c == N){ oldu = true; if(Mode == UC) ans.pb(mp(t, x)); return; } if(r <= 0){ simulate(r, c+1, t, x+1, UC, timer+1); if(oldu) return; ans.pb(mp(t, x)); simulate(r+1, c+1, -1, -1, DUS, timer+1); if(!oldu) ans.pop_back(); return; } if(Mode == UC){ simulate(r-1, c+1, t, x+1, UC, timer+1); if(oldu) return; ans.pb(mp(t, x)); simulate(r+1, c+1, -1, -1, DUS, timer+1); if(oldu) return; } if(Mode == DUS){ simulate(r+1, c+1, -1, -1, DUS, timer+1); if(oldu) return; simulate(r-1, c+1, timer, 1, UC, timer+1); if(oldu) return; } if(Mode == YURU){ simulate(r, c+1, -1, -1, YURU, timer+1); if(oldu) return; simulate(r-1, c+1, timer, 1, UC, timer+1); if(oldu) return; } return; } int main(int argc, char **argv){ ios_base::sync_with_stdio(false); cin.tie(NULL); cout.tie(NULL); cin >> N; field.resize(10, vector<bool>(N)); for(int i = 0; i < 10; ++i){ for(int j = 0; j < N; ++j){ char c; cin >> c; field[i][j] = (c == 'X'); } } simulate(9, 0, -1, -1, YURU, 0); cout << endl; //cout << oldu << endl; for(int i = 0; i < (int)ans.size(); ++i){ cout << ans[i].st << sp << ans[i].nd << endl; } return 0; } //cikisir
#Verdict Execution timeMemoryGrader output
Fetching results...