제출 #412638

#제출 시각아이디문제언어결과실행 시간메모리
412638rumen_mArranging Shoes (IOI19_shoes)C++17
100 / 100
159 ms140188 KiB
#include "shoes.h"
#include <bits/stdc++.h>
using namespace std;
const int maxn = 2e5+5;
const int add = 1e5;
queue <int> q[maxn];
int pos[maxn];
int ids[maxn];
int cnt  =0;
struct FENWICK
{
    int fen[maxn];
    void update(int idx, int delta)
    {
        for(;idx<maxn;idx+=(idx&-idx))
            fen[idx]+=delta;
    }
    int query(int idx)
{
    int ans = 0;
    for(;idx>0;idx-=(idx&-idx))
        ans+=fen[idx];
    return ans;
}
    };
    FENWICK F;
long long count_swaps(std::vector<int> s) {
	int i,j;
	for(i=0;i<s.size();i++)
    {
        int x = s[i]+add;
        if(q[x].empty())
        {
            int y = -s[i]+add;
            q[y].push(i);
            pos[i] = cnt;
            cnt+=2;
        }
        else
        {
            pos[i] = pos[q[x].front()]+1;
            q[x].pop();
        }
    }
    int n = s.size();
    for(i=0;i<n;i++)
        ids[pos[i]] = i;
        int all = 0;
        long long ANS = 0;
    for(i=1;i<n;i+=2)
    {

        int x = ids[i];
        int dist = ids[i]+all-F.query(ids[i]+1)-i;
       // cout<<i<<" : "<<ids[i-1]<<" "<<ids[i]<<"  : "<<dist<<endl;
        if(s[ids[i]]<s[ids[i-1]])dist++;
        ANS+=dist;
        all++;
        F.update(ids[i]+1,1);
    }
    return ANS;
}

컴파일 시 표준 에러 (stderr) 메시지

shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:29:11: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   29 |  for(i=0;i<s.size();i++)
      |          ~^~~~~~~~~
shoes.cpp:46:5: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
   46 |     for(i=0;i<n;i++)
      |     ^~~
shoes.cpp:48:9: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   48 |         int all = 0;
      |         ^~~
shoes.cpp:53:13: warning: unused variable 'x' [-Wunused-variable]
   53 |         int x = ids[i];
      |             ^
shoes.cpp:28:8: warning: unused variable 'j' [-Wunused-variable]
   28 |  int i,j;
      |        ^
#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...
#Verdict Execution timeMemoryGrader output
Fetching results...