Submission #1081045

#TimeUsernameProblemLanguageResultExecution timeMemory
1081045aboutonText editor (CEOI24_editor)C++17
5 / 100
13 ms24152 KiB
#include <bits/stdc++.h> using namespace std; #define int long long struct piv { int l, c; bool operator<(const piv &autre) const { if (l == autre.l) return c < autre.c; return l < autre.l; } }; int N; int lignes[(int)1e6+1]; int lD, cD; int lF,cF; vector<pair<int,int>> acc[(int)1e6+1]; map<piv, int> dist; vector<pair<int,int>> surL; vector<piv> vois(piv actu) { vector<piv> ans; int lig = actu.l, col = actu.c; if (lig != 0) { ans.push_back({lig-1, min(lignes[lig-1]-1, col)}); } if (lig != N-1) { ans.push_back({lig+1, min(lignes[lig+1]-1, col)}); } if (col == 0 && lig != 0) { ans.push_back({lig-1, lignes[lig-1]-1}); } if (col = lignes[lig]-1) { ans.push_back({lig+1, 0}); } //for (auto i : ans) cout << i.l << ' ' << i.c << ' '; cout << '\n'; return ans; } signed main() { ios_base::sync_with_stdio(false); cin >> N; cin >> lD >> cD >> lF >> cF; lD--; cD--; lF--; cF--; for (int i = 0; i < N; i ++) { cin >> lignes[i]; lignes[i]++; } queue<piv> bfs; bfs.push({lD,cD}); dist[{lD,cD}] = 0; while (!bfs.empty()) { auto best = bfs.front(); bfs.pop(); //if (dist.count(best)) continue; for (piv nouv : vois(best)) { if (!dist.count(nouv)) { bfs.push({nouv.l, nouv.c}); dist[nouv] = dist[best]+1; } } } /*for (auto it = dist.begin(); it != dist.end(); it ++) { cout << (*it).first.l << ' ' << (*it).first.c << " : " << (*it).second << '\n'; }*/ for (auto it = dist.begin(); it != dist.end(); it ++) { auto mec = *it; if (mec.first.l == lF) { surL.push_back({mec.first.c, mec.second}); } } int mini = 1000000000000000000; for (auto mec : surL) { mini = min(mini, mec.second + abs(mec.first-cF)); } cout << mini<<'\n'; }

Compilation message (stderr)

Main.cpp: In function 'std::vector<piv> vois(piv)':
Main.cpp:39:13: warning: suggest parentheses around assignment used as truth value [-Wparentheses]
   39 |     if (col = lignes[lig]-1)
      |         ~~~~^~~~~~~~~~~~~~~
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...