제출 #1041554

#제출 시각아이디문제언어결과실행 시간메모리
1041554vjudge1Segway (COI19_segway)C++17
100 / 100
458 ms1252 KiB
#include<bits/stdc++.h>

using namespace std;

const int N = 20'000 + 10;
int n, sp[N][3], t[N], boost[N];
bool a[300];

int main()
{
  cin >> n;
  for(int i = 1; i <= n; i ++)
    for(int j = 0; j < 3; j++)
      cin >> sp[i][j];

  int m;
  cin >> m;
  for(int i = 0; i < m; i ++)
    {
      int x;
      cin >> x;
      a[x] = true;
    }

  
  for(int d = 0; d < 300; d ++)
    {
      vector<pair<int,int> > st;
      for(int i = 1; i <= n; i++)
	st.push_back({t[i], i});

      sort(st.begin(), st.end());
      
      vector<int> ahead(n);
      ahead[0] = 0;
      for(int i = 1; i < n; i ++)
	if(st[i].first == st[i - 1].first)
	  ahead[i] = ahead[i - 1];
	else
	  ahead[i] = i % 20;
      
      for(int i = 0; i < n; i ++)
	{

	  int cur = st[i].second;
	 
	  if(a[d] && !boost[cur])
	    boost[cur] = ahead[i];
	  
	  if(boost[cur] > 0)
	    t[cur]++, boost[cur]--;
	  else
	    t[cur] += sp[cur][d / 100];
	}
      
    }

  for(int i = 1; i <= n; i ++)
    cout << t[i] << "\n";
 
  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...