# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
165397 | sans | Jetpack (COCI16_jetpack) | C++14 | 27 ms | 1784 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#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 time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |