Submission #749432

#TimeUsernameProblemLanguageResultExecution timeMemory
749432Username4132Segway (COI19_segway)C++14
100 / 100
119 ms1108 KiB
#include<iostream> #include<algorithm> using namespace std; #define forn(i, n) for(int i=0; i<(int)n; ++i) #define forsn(i, s, n) for(int i=s; i<(int)n; ++i) const int MAXN=20010; int n, m, speed[MAXN][3], tm[MAXN], sec[MAXN], cn[MAXN], ac[310], ord[MAXN]; int dist(int l, int r, int player){ int ret=0; forn(i, 2){ int pos=100*(i+1); if(l<pos && pos<r){ ret+=(pos-l)*speed[player][i]; l=pos; } } int ind=l/100; ret+=(r-l)*speed[player][ind]; return ret; } int main(){ scanf("%d", &n); forn(i, n) forn(j, 3) scanf("%d", &speed[i][j]); forn(i, n) ord[i]=i; scanf("%d", &m); forn(i, m) scanf("%d", ac+i); ac[m++]=300; int cur=0; forn(i, m){ int dis=ac[i]-cur; sort(ord, ord+n, [](int a, int b){ return tm[a]<tm[b]; }); int lst; forn(j, n){ if(j==0 || tm[ord[j]]>tm[ord[j-1]]) lst=j; cn[ord[j]]=lst; } forn(j, n){ if(sec[j]==0) sec[j]=cn[j]%20; if(sec[j]>=dis){ sec[j]-=dis; tm[j]+=dis; } else{ int pos=cur+sec[j]; tm[j]+=(sec[j]+dist(pos, ac[i], j)); sec[j]=0; } } cur=ac[i]; } forn(i, n) printf("%d\n", tm[i]); }

Compilation message (stderr)

segway.cpp: In function 'int main()':
segway.cpp:25:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   25 |     scanf("%d", &n);
      |     ~~~~~^~~~~~~~~~
segway.cpp:26:32: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   26 |     forn(i, n) forn(j, 3) scanf("%d", &speed[i][j]);
      |                           ~~~~~^~~~~~~~~~~~~~~~~~~~
segway.cpp:28:10: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   28 |     scanf("%d", &m);
      |     ~~~~~^~~~~~~~~~
segway.cpp:29:21: warning: ignoring return value of 'int scanf(const char*, ...)' declared with attribute 'warn_unused_result' [-Wunused-result]
   29 |     forn(i, m) scanf("%d", ac+i);
      |                ~~~~~^~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...