Submission #143999

#TimeUsernameProblemLanguageResultExecution timeMemory
143999davitmargArranging Shoes (IOI19_shoes)C++17
10 / 100
54 ms16380 KiB
/*DavitMarg*/ #include <iostream> #include <algorithm> #include <cmath> #include <vector> #include <string> #include <cstring> #include <map> #include <set> #include <queue> #include <iomanip> #include <stack> #include <cassert> #include <iterator> #include <bitset> #include <fstream> #define mod 1000000007ll #define LL long long #define LD long double #define MP make_pair #define PB push_back #define all(v) v.begin(),v.end() using namespace std; LL ans; int n,id=1,used[100005]; vector<int> a,en[100005]; void mergeSerge(int l,int r) { if(l>=r) return; int m=(l+r)/2; mergeSerge(l,m); mergeSerge(m+1,r); vector<int> x,y,res; for(int i=l;i<=m;i++) x.PB(a[i]); for(int i=m+1;i<=r;i++) y.PB(a[i]); int p=0,k=0; while(p<x.size()) { while(k<y.size() && y[k]<x[p]) { ans+=x.size()-p; res.PB(y[k++]); } res.PB(x[p++]); } while(k<y.size()) res.PB(y[k++]); for(int i=l;i<=r;i++) a[i]=res[i-l]; } LL count_swaps(vector<int> A) { a=A; n=A.size()/2; for(int i=0;i<a.size();i++) { if(a[i]>0) en[a[i]].PB(i); } for(int i=1;i<=n;i++) reverse(all(en[i])); for(int i=0;i<a.size();i++) if(!used[i] && a[i]<0) { used[i]=1; used[en[-a[i]].back()]=1; //cout<<i<<" - "<<en[-a[i]].back()<<endl; a[en[-a[i]].back()]=id+1; en[-a[i]].pop_back(); a[i]=id; id+=2; } mergeSerge(0,2*n-1); return ans; } #ifdef death int main() { int N; cin>>N; N*=2; vector<int> X; for(int i=0;i<N;i++) { X.PB(0); cin>>X.back(); } cout<<count_swaps(X)<<endl; return 0; } #endif // death /* 3 -2 2 2 -2 -2 2 */

Compilation message (stderr)

shoes.cpp: In function 'void mergeSerge(int, int)':
shoes.cpp:45:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(p<x.size())
           ~^~~~~~~~~
shoes.cpp:47:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while(k<y.size() && y[k]<x[p])
               ~^~~~~~~~~
shoes.cpp:54:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(k<y.size())
           ~^~~~~~~~~
shoes.cpp: In function 'long long int count_swaps(std::vector<int>)':
shoes.cpp:65:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<a.size();i++)
                 ~^~~~~~~~~
shoes.cpp:72:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<a.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...