Submission #92547

#TimeUsernameProblemLanguageResultExecution timeMemory
92547ShtefNLO (COCI18_nlo)C++14
88 / 110
424 ms66560 KiB
#include <iostream> #include <map> #include <vector> #include <cmath> #include <set> #include <utility> #include <algorithm> using namespace std; typedef long long ll; typedef long double ld; typedef pair <int, char> pii; #define x first #define y second #define mp make_pair int n, m, k; vector <pii> c[100005]; void processcircle(int x, int y, int r, int val){ for(int i = max(1, y - r) ; i <= min(m, y + r) ; ++i){ int koef = sqrt((ll)(r - i + y) * (r + i - y)); c[i].push_back(mp(max(1, x - koef), val)); c[i].push_back(mp(min(n + 1, x + koef + 1), -val)); } } int main(){ ios_base::sync_with_stdio(false); cin.tie(0); cout.tie(0); cin >> n >> m; cin >> k; for(int i = 0 ; i < k ; ++i){ int x, y, r; cin >> x >> y >> r; processcircle(x, y, r, i + 1); } ll sol = 0; for(int i = 1 ; i <= m ; ++i){ int last = 1; set <char, greater <char> > s; sort(c[i].begin(), c[i].end()); for(int j = 0 ; j < c[i].size() ; ){ int t = c[i][j].x; sol += (ll)(t - last) * (k - (!s.empty() ? *s.begin() : 0LL)); while(j < c[i].size() && c[i][j].x == t){ int o = c[i][j].y; if(o < 0){ s.erase(s.find(-o)); } else{ s.insert(o); } j++; } last = t; } sol += (n + 1 - last) * k; } cout << sol << endl; return 0; }

Compilation message (stderr)

nlo.cpp: In function 'int main()':
nlo.cpp:45:20: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
  for(int j = 0 ; j < c[i].size() ; ){
                  ~~^~~~~~~~~~~~~
nlo.cpp:48:11: warning: comparison between signed and unsigned integer expressions [-Wsign-compare]
   while(j < c[i].size() && c[i][j].x == t){
         ~~^~~~~~~~~~~~~
#Verdict Execution timeMemoryGrader output
Fetching results...