Submission #233266

#TimeUsernameProblemLanguageResultExecution timeMemory
233266VEGAnnTenis (COI19_tenis)C++14
30 / 100
1091 ms2936 KiB
#include <bits/stdc++.h> using namespace std; const int N = 100100; const int md = int(1e9) + 7; int loc[3][N], n, q, a[3][N], mn[3], men[3], lst[3]; bool mrk[N]; int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef _LOCAL freopen("in.txt","r",stdin); #endif // _LOCAL cin >> n >> q; for (int tp = 0; tp < 3; tp++) for (int i = 0; i < n; i++){ int x; cin >> x; x--; loc[tp][x] = i; a[tp][i] = x; } for (; q; q--){ int tp; cin >> tp; if (tp == 1){ int x; cin >> x; x--; fill(mrk, mrk + n, 0); mn[0] = mn[1] = mn[2] = n; for (int tp = 0; tp < 3; tp++) lst[tp] = loc[tp][x]; for (int tp = 0; tp < 3; tp++) for (int i = loc[tp][x]; i < n; i++) { mrk[a[tp][i]] = 1; for (int j = 0; j < 3; j++) mn[j] = min(mn[j], loc[j][a[tp][i]]); } bool was = 1; while (was) { was = 0; men[0] = mn[0]; men[1] = mn[1]; men[2] = mn[2]; for (int tp = 0; tp < 3; tp++) for (int i = mn[tp]; i < lst[tp]; i++) if (!mrk[a[tp][i]]){ for (int j = 0; j < 3; j++) men[j] = min(men[j], loc[j][a[tp][i]]); was = 1; mrk[a[tp][i]] = 1; } lst[0] = mn[0]; lst[1] = mn[1]; lst[2] = mn[2]; mn[0] = men[0]; mn[1] = men[1]; mn[2] = men[2]; } bool ok = 1; for (int i = 0; i < n && ok; i++) if (!mrk[i]) ok = 0; cout << (ok ? "DA\n" : "NE\n"); } else { int x, y; cin >> tp >> x >> y; tp--; x--; y--; swap(loc[tp][x], loc[tp][y]); swap(a[tp][loc[tp][x]], a[tp][loc[tp][y]]); } } return 0; }
#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...