Submission #1116159

#TimeUsernameProblemLanguageResultExecution timeMemory
1116159Dan4LifeCoin Collecting (JOI19_ho_t4)C++17
0 / 100
1 ms504 KiB
#include <bits/stdc++.h> using namespace std; #define pb push_back #define sz(a) (int)a.size() #define all(a) begin(a),end(a) #define int long long const int N = (int)1e5+10; int n, a[N][3]; int32_t main(){ ios_base::sync_with_stdio(false); cin.tie(0); cin >> n; int ans = 0, xd = 0; for(int i = 0; i < 2*n; i++){ int x, y; cin >> x >> y; int X = x, Y = y; x=clamp(x,1ll,n), y=clamp(y,1ll,2ll); ans+=abs(X-x)+abs(Y-y); a[x][y]++; } for(int i = 1; i <= n; i++) xd+=a[i][1], a[i][1]+=a[i][2]; ans+=abs(xd-n); int j = 1; for(int i = 1; i <= n; i++){ int tot = a[i][1]; if(tot==2) continue; if(tot<2){ int need = 2-tot; j = max(j,i); while(j<n and !a[j][1]) j++; if(a[j][1]>=need){ a[j][1]-=need; a[i][1]+=need; ans+=(j-i)*need; } else{ need-=a[j][1]; a[i][1]+=a[j][1]; ans+=(j-i)*a[j][1]; a[j][1]=0; while(j<n and !a[j][1]) j++; if(a[j][1]>=need){ a[j][1]-=need; a[i][1]+=need; ans+=(j-i)*need; } } } else{ tot-=2; ans+=tot; a[i+1][1]+=tot,a[i][1]-=tot; } } cout << ans << "\n"; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...