답안 #248772

# 제출 시각 아이디 문제 언어 결과 실행 시간 메모리
248772 2020-07-13T10:48:03 Z uacoder123 Garage (IOI09_garage) C++14
100 / 100
1 ms 384 KB
 #include <bits/stdc++.h>
using namespace std;
#define F first
#define S second
#define FOR(i,a,b) for (auto i = (a); i <= (b); ++i)
#define NFOR(i,a,b) for(auto i = (a); i >= (b); --i)
#define all(x) (x).begin(), (x).end()
#define sz(x) int(x.size())
#define mp(i,a) make_pair(i,a)
#define pb(a) push_back(a)
#define bit(x,b) (x&(1LL<<b))
 
typedef int lli;
typedef pair <lli,lli> ii;
typedef pair <lli,ii> iii;
typedef vector <lli> vi;

int main()
{
  ios_base::sync_with_stdio(false);
  cin.tie(NULL);
  int test=1;
  for(;test>0;--test)
  {
    int n,m,ans=0;
    cin>>n>>m;
    int r[n+1],w[m+1],pos[m+1]={};
    set<int>p;
    queue<int> q;
    for(int i=1;i<=n;++i)
    {
      cin>>r[i];
      p.insert(i);
    }
    for(int i=1;i<=m;++i)
      cin>>w[i];
    for(int i=0;i<2*m;++i)
    {
      int f;
      cin>>f;
      if(f>0)
      {
        if(p.size()>0)
        {
          int fp=(*p.begin());
          p.erase(p.begin());
          pos[f]=fp;
          ans+=r[fp]*w[f];
        }
        else
          q.push(f);
      }
      else
      {
        p.insert(pos[-f]);
        pos[-f]=0;
        if(q.size())
        {
          int fi=q.front();
          q.pop();
          int fp=(*p.begin());
          p.erase(p.begin());
          pos[fi]=fp;
          ans+=r[fp]*w[fi];
        }
      }
    }
    cout<<ans<<endl;
  }
  return(0);
}
# 결과 실행 시간 메모리 Grader output
1 Correct 0 ms 384 KB Output is correct
2 Correct 0 ms 384 KB Output is correct
3 Correct 0 ms 384 KB Output is correct
4 Correct 0 ms 384 KB Output is correct
5 Correct 0 ms 384 KB Output is correct
6 Correct 0 ms 384 KB Output is correct
7 Correct 0 ms 384 KB Output is correct
8 Correct 0 ms 384 KB Output is correct
9 Correct 0 ms 384 KB Output is correct
10 Correct 0 ms 384 KB Output is correct
11 Correct 0 ms 384 KB Output is correct
12 Correct 0 ms 384 KB Output is correct
13 Correct 0 ms 384 KB Output is correct
14 Correct 1 ms 384 KB Output is correct
15 Correct 1 ms 384 KB Output is correct
16 Correct 1 ms 384 KB Output is correct
17 Correct 1 ms 256 KB Output is correct
18 Correct 1 ms 384 KB Output is correct
19 Correct 1 ms 384 KB Output is correct
20 Correct 1 ms 384 KB Output is correct