Submission #666772

#TimeUsernameProblemLanguageResultExecution timeMemory
666772TrumlingRobots (IOI13_robots)C++14
0 / 100
149 ms16052 KiB
#include "robots.h" #include<bits/stdc++.h> using namespace std; typedef long long ll; #define pb push_back #define F first #define S second #define enter cout<<'\n'; int putaway(int a, int b, int t, int x[], int y[], int w[], int s[]) { sort(x,x+a,greater<ll>()); sort(w,w+t,greater<ll>()); if(x[0]<=w[0]) return -1; ll idx=0; ll arr[a+1]; for(int i=0;i<a;i++) { while(idx<t && w[idx]>=x[i]) { idx++; } arr[i]=idx; } arr[a]=t; ll rest[a+10]={ }; ll pre=arr[0],count=1; ll time=0; for(int i=1;i<=a;i++) { if(arr[i]==pre){ count++; continue; } ll now=(arr[i]-pre)/count; ll rem=(arr[i]-pre)%count; if(rem){ now++; rem=count-rem; } if(time==0) { count=1; time=now; rest[time]+=rem; rest[time+1]+=count-rem; pre=arr[i]; continue; } if(now<=time) { rest[now]+=rem; rest[now+1]+=count-rem; count=1; pre=arr[i]; continue; } ll toys=(arr[i]-pre); for(ll j=1;j<=time;j++) { toys-=count+rest[j]; if(toys<=0) { rest[j+1]+=count+rest[j]+toys; rest[j]=-toys; break; } rest[j+1]+=rest[j]; rest[j]=0; } if(toys<=0) { count=1; pre=arr[i]; continue; } now=toys/(count+rest[time+1]); rem=toys%(count+rest[time+1]); if(toys%(count+rest[time+1])) { now++; rem=count+rest[time+1]-rem; } rest[time+1]=0; rest[time+1+now]+=rem; rest[time+now+2]+=count+rest[time+1]-rem; time=time+now+1; pre=arr[i]; count=1; } return time; }
#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...