Submission #165665

#TimeUsernameProblemLanguageResultExecution timeMemory
165665Atill83Jetpack (COCI16_jetpack)C++14
80 / 80
36 ms13304 KiB
#include <bits/stdc++.h> #define ff first #define ss second #define endl '\n' using namespace std; const long long INF = (long long) 1e18; const int mod = (int) 1e9+7; const int MAXN = (int) 3e5+5; typedef long long ll; typedef unsigned long long ull; typedef pair<int,int> pii; typedef pair<ll,ll> pll; ll n; char grid[15][MAXN]; bool can[15][MAXN]; bool did[15][MAXN]; queue<pii>ans; stack<pii>as; bool do_it(int col, int row){ //cout<<endl; //cout<<col<<" "<<row<<endl; if(grid[row][col] == 'X'){ return false; } if(col == n){ return can[row][col] = true; } if(did[row][col]){ return can[row][col]; } did[row][col] = 1; //cout<<col<<" "<<row<<endl; if(do_it(col + 1, max(0, row - 1))){ return can[row][col] = true; }else if(do_it(col + 1, min(9, row + 1))){ ans.push({col, 1}); return can[row][col] = true; }else{ return can[row][col] = false; } } int main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr);cout.tie(nullptr); #ifdef Local freopen("../IO/int.txt","r",stdin); freopen("../IO/out.txt","w",stdout); #endif cin>>n; for(int j = 9; j >= 0; j--){ for(int i = 0; i < n; i++){ cin>>grid[j][i]; } } do_it(0, 0); while(!ans.empty()){ int cur = ans.front().ff, num = ans.front().ss; ans.pop(); while(!ans.empty() && ans.front().ff == cur - 1){ num++; cur--; ans.pop(); } as.push({cur, num}); } cout<<as.size()<<endl; while(!as.empty()){ cout<<as.top().ff<<" "<<as.top().ss<<endl; as.pop(); } #ifdef Local cout<<endl<<fixed<<setprecision(2)<<1000.0 * clock() / CLOCKS_PER_SEC<< " milliseconds "; #endif }
#Verdict Execution timeMemoryGrader output
Fetching results...