Submission #233345

#TimeUsernameProblemLanguageResultExecution timeMemory
233345VEGAnnSegway (COI19_segway)C++14
40 / 100
1099 ms2676 KiB
#include <bits/stdc++.h> #define sz(x) ((int)x.size()) #define all(x) x.begin(),x.end() #define PB push_back using namespace std; const int N = 20100; const int M = 310; const int md = int(1e9) + 7; vector<array<int, 3> > vc; vector<int> events[M][2]; int a[N][3], n, tim[N], m, ans[N], mem[N], fast[N]; bool loc[M]; bool cmp(int _x, int _y){ return tim[_x] < tim[_y]; } int main(){ ios_base::sync_with_stdio(0); cin.tie(0); #ifdef _LOCAL freopen("in.txt","r",stdin); #endif // _LOCAL cin >> n; for (int i = 0; i < n; i++) { cin >> a[i][0] >> a[i][1] >> a[i][2]; vc.PB({i, 0, 0}); } cin >> m; for (int i = 0; i < m; i++){ int x; cin >> x; loc[x] = 1; } int tim = 0; while (sz(vc)){ for (array<int, 3> cr : vc) { if (cr[1] == 300) ans[cr[0]] = tim; else events[cr[1]][cr[2]].PB(cr[0]); } vc.clear(); int kol = n; for (int i = 0; i < 300; i++) for (int tp = 0; tp < 2; tp++){ if (sz(events[i][tp]) == 0) continue; kol -= sz(events[i][tp]); int ost = min(300 - i, kol % 20); if (tp == 0 && loc[i] && ost > 0){ for (int cr : events[i][tp]){ int speed = a[cr][0]; if (i > 99) speed = a[cr][1]; if (i > 199) speed = a[cr][2]; if (fast[cr] > 0){ vc.PB({cr, i + 1, 0}); mem[cr] = tim + 1; fast[cr]--; } else { fast[cr] = ost - 1; mem[cr] = tim + 1; vc.PB({cr, i + 1, 0}); if ((i + 1) % 100 == 0) mem[cr] = tim + 1; } } } else { for (int cr : events[i][tp]){ int speed = a[cr][0]; if (i > 99) speed = a[cr][1]; if (i > 199) speed = a[cr][2]; if (fast[cr] > 0){ vc.PB({cr, i + 1, 0}); mem[cr] = tim + 1; fast[cr]--; } else { if (mem[cr] % speed == (tim + 1) % speed) { vc.PB({cr, i + 1, 0}); if ((i + 1) % 100 == 0) mem[cr] = tim + 1; } else vc.PB({cr, i, 1}); } } } events[i][tp].clear(); } tim++; } for (int i = 0; i < n; i++) cout << ans[i] << '\n'; return 0; }

Compilation message (stderr)

segway.cpp: In function 'int main()':
segway.cpp:62:25: warning: variable 'speed' set but not used [-Wunused-but-set-variable]
                     int speed = a[cr][0];
                         ^~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...