# | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
---|---|---|---|---|---|---|---|
117896 | 2019-06-17T10:45:45 Z | imyujin | Segway (COI19_segway) | C++14 | 2 ms | 384 KB |
#include<stdio.h> #include<queue> #include<vector> using namespace std; #define MAXN 20005 typedef pair<int, int> pi; int v[MAXN][3]; int x[MAXN]; int ans[MAXN]; int cnt[305]; vector<int> ve; int cntt = 0; int main() { int N, M; int p[300]; priority_queue<pi, vector<pi>, greater<pi> > pq; //freopen("input.txt", "r", stdin); scanf("%d", &N); for (int i = 0; i < N; i++) for (int j = 0; j < 3; j++) scanf("%d", &v[i][j]); scanf("%d", &M); for (int i = 1; i <= M; i++) scanf("%d", p + i); p[0] = 0; p[M+1] = 300; for (int i = 0; i < N; i++) pq.push(make_pair(0, i)); while (!pq.empty()) { pi t = pq.top(); //printf("[%d %d]\n", t.first, t.second); pq.pop(); int k = x[t.second]+1; if (k <= M+1) { while (k <= M && p[k] < p[x[t.second]] + cnt[x[t.second]]%20) k++; int ti = t.first + cnt[x[t.second]]%20; int po = p[x[t.second]] + cnt[x[t.second]]%20; //printf("%d %d %d\n", k, po, p[k]); if (po > p[k]) ti -= po - 300; else if (po < 100) { if (p[k] < 100) ti += (p[k] - po) * v[t.second][0]; else if (p[k] < 200) ti += (100 - po) * v[t.second][0] + (p[k] - 100) * v[t.second][1]; else ti += (100 - po) * v[t.second][0] + 100 * v[t.second][1] + (p[k] - 200) * v[t.second][2]; } else if (po < 200) { if (p[k] < 200) ti += (p[k] - po) * v[t.second][1]; else ti += (200 - po) * v[t.second][1] + (p[k] - 200) * v[t.second][2]; } else ti += (p[k] - po) * v[t.second][2]; pq.push(make_pair(ti, t.second)); //printf("{%d %d}\n", ti, t.second); cntt++; if (cntt > 20) return 0; } else ans[t.second] = t.first; for (int i = x[t.second]; i < k; i++) ve.push_back(i); if (pq.empty() || t.first != pq.top().first) while (!ve.empty()) { cnt[ve.back()]++; ve.pop_back(); } x[t.second] = k; } for (int i = 0; i < N; i++) printf("%d\n", ans[i]); return 0; }
Compilation message
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 384 KB | Output is correct |
2 | Incorrect | 2 ms | 256 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Incorrect | 2 ms | 384 KB | Output isn't correct |
2 | Halted | 0 ms | 0 KB | - |
# | 결과 | 실행 시간 | 메모리 | Grader output |
---|---|---|---|---|
1 | Correct | 2 ms | 384 KB | Output is correct |
2 | Incorrect | 2 ms | 256 KB | Output isn't correct |
3 | Halted | 0 ms | 0 KB | - |