Submission #144000

#TimeUsernameProblemLanguageResultExecution timeMemory
144000davitmargArranging Shoes (IOI19_shoes)C++17
10 / 100
53 ms16348 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; for(int i=l;i<=m;i++) x.PB(a[i]); for(int i=m+1;i<=r;i++) y.PB(a[i]); int d=l; int p=0,k=0; while(p<x.size()) { while(k<y.size() && y[k]<x[p]) { ans+=(LL)(x.size()-p); a[d++]=y[k++]; } a[d++]=x[p++]; } while(k<y.size()) a[d++]=y[k++]; } 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:46:12: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     while(p<x.size())
           ~^~~~~~~~~
shoes.cpp:48:16: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
         while(k<y.size() && y[k]<x[p])
               ~^~~~~~~~~
shoes.cpp:55: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:64:18: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
     for(int i=0;i<a.size();i++)
                 ~^~~~~~~~~
shoes.cpp:71: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...