| # | 제출 시각 | 아이디 | 문제 | 언어 | 결과 | 실행 시간 | 메모리 |
|---|---|---|---|---|---|---|---|
| 1305979 | neonglitch | Garage (IOI09_garage) | C++20 | 2 ms | 584 KiB |
#include <iostream>
#include <set>
#include <queue>
using namespace std;
#define int long long
const int N=3e3+10;
int r[N],w[N],tk[N];
set<int> rem;
main()
{
ios::sync_with_stdio(0);
cin.tie(0);
cout.tie(0);
int n,m;
cin>>n>>m;
for(int i=1;i<=n;i++)
{
cin>>r[i];
rem.insert(i);
}
for(int i=1;i<=m;i++)
{
cin>>w[i];
}
queue<int> lst;
int ans=0;
for(int i=0;i<2*m;i++)
{
int x;
cin>>x;
if(x>0)
{
if(rem.size()>0)
{
auto it=*begin(rem);
rem.erase(begin(rem));
tk[x]=it;
ans+=r[it]*w[x];
}
else{
lst.push(x);
}
}
else{
x=-x;
rem.insert(tk[x]);
while(lst.size()>0 and rem.size()>0)
{
int y=lst.front();
lst.pop();
auto it=*begin(rem);
rem.erase(begin(rem));
ans+=r[it]*w[y];
tk[y]=it;
}
}
}
cout<<ans<<endl;
}
컴파일 시 표준 에러 (stderr) 메시지
| # | Verdict | Execution time | Memory | Grader output |
|---|---|---|---|---|
| Fetching results... | ||||
