Submission #300930

#TimeUsernameProblemLanguageResultExecution timeMemory
300930pit4hCoin Collecting (JOI19_ho_t4)C++14
100 / 100
85 ms9080 KiB
#include<bits/stdc++.h> #define st first #define nd second #define mp make_pair #define pb push_back #ifndef LOCAL #define cerr if(0)cerr #endif using namespace std; using ll = long long; using ld = long double; using pii = pair<int, int>; using vi = vector<int>; int main() { ios_base::sync_with_stdio(0);cin.tie(0);cout.tie(0); int n; cin>>n; vector<vector<int>> cnt(n+1, vector<int>(3)); ll ans = 0; for(int i=0; i<2*n; ++i) { ll x, y; cin>>x>>y; ll nx = max(1LL, min((ll)n, x)); ll ny = max(1LL, min(2LL, y)); cnt[nx][ny]++; ans += abs(x - nx) + abs(y - ny); } vector<int> filled(3); for(int i=1; i<=n; ++i) { for(int j=1; j<=2; ++j) { int fill = min(i - filled[j], cnt[i][j]); ans += (ll)(i-filled[j]-1) * fill - (ll)fill * (fill-1) / 2; filled[j] += fill; cnt[i][j] -= fill; } for(int j=1; j<=2; ++j) { int fill = min(i - filled[j%2+1], cnt[i][j]); ans += (ll)(i-filled[j%2+1]-1) * fill - (ll)fill * (fill-1) / 2 + (ll)fill; filled[j%2+1] += fill; cnt[i][j] -= fill; } if(i+1 <= n) { for(int j=1; j<=2; ++j) { ans += cnt[i][j]; cnt[i+1][j] += cnt[i][j]; } } } cout<<ans; }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...