제출 #1162768

#제출 시각아이디문제언어결과실행 시간메모리
1162768mpopov1Garage (IOI09_garage)C++20
100 / 100
2 ms528 KiB
#include <bits/stdc++.h> using namespace std; #define ll long long #define all(v) v.begin(), v.end() #define rall(v) v.rbegin(), v.rend() #define pb push_back int main(){ //freopen("lemonade.in", "r", stdin); //freopen("lemonade.out", "w", stdout); int n,m; cin >> n >> m; int rates[100]; for(int i=0; i<n; i++){ cin >> rates[i]; } int weights[2000]; for(int i=0; i<m; i++){ cin >> weights[i]; } int cars[4000]; for(int i=0; i<2*m; i++){ cin >> cars[i]; } int spaces[100]; for(int i=0; i<n; i++){ spaces[i]=-1; } ll ans=0; int idx=0; int waiting[2000]; for(int i=0; i<2000; i++) waiting[i]=-1; for(int i=0; i<2*m; i++){ int caridx=abs(cars[i])-1; if(cars[i]>0){ if(waiting[0]!=-1){ bool nqma=false; for(int j=0; j<n; j++){ if(spaces[j]==-1){ break; } if(j==n-1) nqma=true; } if(nqma){ waiting[idx]=caridx; idx++; } else{ for(int j=0; j<n; j++){ if(spaces[j]==-1){ spaces[j]=waiting[0]; ans+=rates[j]*weights[waiting[0]]; break; } } //0 1 2 3 4 -1 //1 2 3 4 -1 -1 for(int j=0; j<idx-1; j++){ waiting[j]=waiting[j+1]; } idx--; waiting[idx]=caridx; idx++; } } else{ bool nqma=false; for(int j=0; j<n; j++){ if(spaces[j]==-1){ spaces[j]=caridx; ans+=rates[j]*weights[caridx]; break; } if(j==n-1) nqma=true; } if(nqma){ waiting[idx]=caridx; idx++; } } } else if(cars[i]<0){ int bruh; for(int j=0; j<n; j++){ if(spaces[j]==caridx){ spaces[j]=-1; bruh=j; break; } } if(waiting[0]!=-1){ spaces[bruh]=waiting[0]; ans+=rates[bruh]*weights[waiting[0]]; for(int j=0; j<idx-1; j++){ waiting[j]=waiting[j+1]; } idx--; waiting[idx]=-1; } } } cout << ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...