제출 #422653

#제출 시각아이디문제언어결과실행 시간메모리
422653oleh1421Arranging Shoes (IOI19_shoes)C++17
100 / 100
150 ms32924 KiB
//#include "grader.cpp" #include "shoes.h" #include <bits/stdc++.h> typedef long long ll; using namespace std; const int N=200010; int t[N]; void upd(int n,int pos,int x){ for (;pos<=n;pos|=pos+1) t[pos]+=x; } int get(int pos){ int sum=0; for (;pos>=0;pos&=pos+1,pos--) sum+=t[pos]; return sum; } set<int>open[N],close[N]; int r[N]; ll count_swaps(vector<int> s) { for (int i=0;i<s.size();i++) s[i]=-s[i]; for (int i=0;i<s.size();i++){ if (s[i]>0) open[s[i]].insert(i); else if (s[i]<0) close[-s[i]].insert(i); } ll res=0ll; for (int i=0;i<s.size();i++){ if (r[i]==-1) continue; if (s[i]>0){ r[i]=(*close[s[i]].begin()); r[r[i]]=-1; close[s[i]].erase(close[s[i]].begin()); open[s[i]].erase(i); } else { r[i]=(*open[-s[i]].begin()); r[r[i]]=-1; open[-s[i]].erase(open[-s[i]].begin()); res++; close[-s[i]].erase(i); } // cout<<i<<" "<<r[i]<<endl; } for (int i=0;i<s.size();i++){ upd(s.size(),i,1); } for (int i=0;i<s.size();i++){ if (r[i]==-1) continue; // cout<<i<<" "<<r[i]<<endl; res+=get(r[i]-1)-get(i); upd(s.size(),r[i],-1); } return res; }

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

shoes.cpp: In function 'll count_swaps(std::vector<int>)':
shoes.cpp:19:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   19 |     for (int i=0;i<s.size();i++) s[i]=-s[i];
      |                  ~^~~~~~~~~
shoes.cpp:20:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   20 |     for (int i=0;i<s.size();i++){
      |                  ~^~~~~~~~~
shoes.cpp:25:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   25 |     for (int i=0;i<s.size();i++){
      |                  ~^~~~~~~~~
shoes.cpp:42:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   42 |     for (int i=0;i<s.size();i++){
      |                  ~^~~~~~~~~
shoes.cpp:45:19: warning: comparison of integer expressions of different signedness: 'int' and 'std::vector<int>::size_type' {aka 'long unsigned int'} [-Wsign-compare]
   45 |     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...