Submission #523661

#TimeUsernameProblemLanguageResultExecution timeMemory
523661iskhakkutbilimTrampoline (info1cup20_trampoline)C++14
23 / 100
2029 ms1048580 KiB
// Author: Tazhibaev Iskhak #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> using namespace __gnu_pbds; using namespace std; typedef tree<pair<int, int> ,null_type,less< pair<int, int> >,rb_tree_tag, tree_order_statistics_node_update> ordered_set; const long double pi = acos((long double) - 1.0); const double eps = (double)1e-9; const int INF = 1e9 + 7; #define ff first #define ss second #define ll long long #define ld long double #define pb push_back void usaco( string filename){ freopen((filename+".in").c_str(), "r", stdin); freopen((filename+".out").c_str(), "w", stdout); } int r, c, n; bool in(int i, int j){ if(i >= 1 and i <= r and j >= 1 and j <= c) return true; return false; } main(){ ios_base::sync_with_stdio(false); cin.tie(nullptr); cout.tie(nullptr); cin >> r >> c >> n; set<pair<int, int> > st; for(int i = 0;i < n; i++){ int x, y; cin >> x >> y; if(st.count({x, y})) assert(false); st.insert({x, y}); } int T; cin >> T; while(T--){ pair<int, int> start; cin >> start.ff >> start.ss; pair<int, int> end; cin >> end.ff >> end.ss; if(end.ff - start.ff == 1 and end.ss >= end.ff){ if(st.count(start)) cout << "Yes"; else cout << "No"; cout << "\n"; continue; }if(end.ff == start.ff and end.ss >= end.ff){ cout << "Yes" << "\n"; continue; }else if(end.ff < start.ff ){ cout << "No" << "\n"; continue; }else if(end.ss < start.ss){ cout << "No" << "\n"; continue; } queue< pair<int, int> > q; int dis[r + 1][c + 1]; memset(dis, -1, sizeof(dis)); dis[start.ff][start.ss] = 0; q.push(start); while(!q.empty()){ if(dis[end.ff][end.ss] != -1){ break; } pair<int, int> v = q.front(); q.pop(); if(st.count(v) and in(v.ff +1, v.ss) and dis[v.ff + 1][v.ss] == -1){ dis[v.ff + 1][v.ss] = dis[v.ff][v.ss] + 1; q.push({v.ff + 1, v.ss}); } if(in(v.ff, v.ss+1) and dis[v.ff][v.ss + 1] == -1){ dis[v.ff][v.ss + 1] = dis[v.ff][v.ss] + 1; q.push({v.ff, v.ss+1}); } } if(dis[end.ff][end.ss] == -1) cout << "No"; else cout << "Yes"; cout << "\n"; } return 0; }

Compilation message (stderr)

trampoline.cpp:31:1: warning: ISO C++ forbids declaration of 'main' with no type [-Wreturn-type]
   31 | main(){
      | ^~~~
trampoline.cpp: In function 'void usaco(std::string)':
trampoline.cpp:20:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   20 |   freopen((filename+".in").c_str(), "r", stdin);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
trampoline.cpp:21:10: warning: ignoring return value of 'FILE* freopen(const char*, const char*, FILE*)' declared with attribute 'warn_unused_result' [-Wunused-result]
   21 |   freopen((filename+".out").c_str(), "w", stdout);
      |   ~~~~~~~^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...