제출 #211175

#제출 시각아이디문제언어결과실행 시간메모리
211175arctanArranging Shoes (IOI19_shoes)C++14
100 / 100
198 ms141176 KiB
#include<bits/stdc++.h> #include "shoes.h" using namespace std; typedef long long ll; const ll mod=1e9+7; const ll maxn=200005; const ll inf=1e9+7; queue<ll> m[2][100005]; ll BIT[maxn]; inline int lsb(int x) { return x&(-x); } void add(int x,int v) { for(int i=x;i<maxn;i+=lsb(i)) { BIT[i]+=v; } } ll query(ll x) { //assert(x>=0); ll res=0; int cnt=0; for(int i=x;i>0;i-=lsb(i)) { res+=BIT[i]; } return res; } ll count_swaps(std::vector<int> s) { for(int i=0;i<s.size();i++) { bool x=0; if(s[i]<0) { x=1; m[x][-s[i]].push(i); } else m[x][s[i]].push(i); add(i+1,1); } ll sum=0; for(int i=0;i<s.size();i++) { bool x=(s[i]<0); s[i]=abs(s[i]); if(m[!x][s[i]].empty()) continue; if(m[x][s[i]].front()!=i) continue; assert(m[!x][s[i]].size()==m[x][s[i]].size()); ll p=m[!x][s[i]].front(); m[x][s[i]].pop(); m[!x][s[i]].pop(); sum+=query(p)-query(i+1); if(!x) sum++; //cout<<i<<" "<<sum<<"\n"; add(p+1,-1); //add(i+1,-1); //if(i>50000) assert(0); } return sum; }

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

shoes.cpp: In function 'll query(ll)':
shoes.cpp:28:8: warning: unused variable 'cnt' [-Wunused-variable]
    int cnt=0;
        ^~~
shoes.cpp: In function 'll count_swaps(std::vector<int>)':
shoes.cpp:37:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<s.size();i++)
                 ~^~~~~~~~~
shoes.cpp:49:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<s.size();i++)
                 ~^~~~~~~~~
#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...