이 제출은 이전 버전의 oj.uz에서 채점하였습니다. 현재는 제출 당시와는 다른 서버에서 채점을 하기 때문에, 다시 제출하면 결과가 달라질 수도 있습니다.
#include<bits/stdc++.h>
using namespace std;
int main()
{
ios_base::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
long long n,a,b,ans = 0,br1 = 0,br2 = 0;
cin >> n;
vector<long long> haha(n);
for(long long i = 0; i < 2*n; i++) {
cin >> a >> b;
if(a > n) {
ans+=a-n;
a = n;
}
else if(a < 1) {
ans+=1-a;
a = 1;
}
if(b < 1) {
ans+=1-b;
b = 1;
}
else if(b > 2) {
ans+=b-2;
b = 2;
}
haha[a-1]++;
if(b == 1) {
br1++;
}
else {
br2++;
}
}
ans+=abs(br1-br2)/2;
stack<pair<long long,long long>> idk;
for(long long i = 0; i < n; i++) {
if(haha[i] < 2) {
while(!idk.empty() && haha[i] < 2 && idk.top().second == 1) {
ans+=i-idk.top().first;
idk.pop();
haha[i]++;
}
while(haha[i] < 2) {
haha[i]++;
idk.push({i,0});
}
}
else if(haha[i] > 2) {
while(!idk.empty() && haha[i] > 2 && idk.top().second == 0) {
ans+=i-idk.top().first;
idk.pop();
haha[i]--;
}
while(haha[i] > 2) {
haha[i]--;
idk.push({i,1});
}
}
}
cout << ans;
return 0;
}
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |
# | Verdict | Execution time | Memory | Grader output |
---|
Fetching results... |