# | Time | Username | Problem | Language | Result | Execution time | Memory |
---|---|---|---|---|---|---|---|
116461 | oolimry | NLO (COCI18_nlo) | C++14 | 260 ms | 65536 KiB |
This submission is migrated from previous version of oj.uz, which used different machine for grading. This submission may have different result if resubmitted.
#include <bits/stdc++.h>
using namespace std;
int main()
{
//freopen("i.txt","r",stdin);
ios_base::sync_with_stdio(false);
cin.tie(0);
long long n, m;
cin >> n >> m;
typedef pair<long long, long long> ii;
static vector<ii> stuff[100005];
int q;
cin >> q;
for(int i = 0;i < n;i++){
stuff[i].push_back(ii(0,0));
stuff[i].push_back(ii(m,0));
}
for(int qq = 1;qq <= q;qq++){
long long x, y, r;
cin >> y >> x >> r;
x--;
y--;
for(int i = y - r;i <= y + r;i++){
long long dy = abs(i - y);
long long dx = sqrt(r * r - dy * dy);
//cout << dx << " " << dy << " " << r << "\n";
stuff[i].push_back(ii(x - dx,qq));
stuff[i].push_back(ii(x + dx + 1,-1 * qq));
}
}
long long ans = 0;
for(int i = 0;i < n;i++){
sort(stuff[i].begin(),stuff[i].end());
set<long long> values;
for(int j = 0;j < stuff[i].size();j++){
if(j != 0 && stuff[i][j].first != stuff[i][j-1].first){
set<long long>::iterator it = values.end();
it--;
long long v1 = q - *it;
long long v2 = stuff[i][j].first - stuff[i][j-1].first;
ans += v1 * v2;
//cout << ans << " ";
}
if(stuff[i][j].second >= 0){
values.insert(stuff[i][j].second);
}
else{
values.erase(-1 * stuff[i][j].second);
}
}
//cout << ans << "\n";
}
cout << ans;
return 0;
}
Compilation message (stderr)
# | Verdict | Execution time | Memory | Grader output |
---|---|---|---|---|
Fetching results... |