Submission #521205

# Submission time Handle Problem Language Result Execution time Memory
521205 2022-02-01T08:10:49 Z cadmiumsky Sails (IOI07_sails) C++14
10 / 100
1000 ms 9012 KB
#include <bits/stdc++.h>

using namespace std;
const int nmax = 1e5 + 5;

#define ll long long

namespace Slope {
  multiset<int> slope;
  int val0;
  int last;
  void init() {
    slope.insert(0);
    val0 = 1;
    last = 0;
    return;
  }
  void insert(int l, int k) {
    //cout << l << ' ' << k << '\n';
    if(k == 0)
      return;
    if(last < l) {
      while(slope.size() < val0) {
        slope.insert(last + 1);
      }
      last = l;
    }
    auto it = upper_bound(slope.begin(), slope.end(), l - k), lst = it;
    lst--;
    bool ok = 0;
    if(*lst == 0) {
      val0++;
      ok = 1;
    }
    int decr = k;
    if(it != slope.end())
      decr = *it - (l - k);
    int temp = *lst;
    slope.erase(lst);
    if(it != slope.end())
      slope.erase(it), slope.insert(l);
    slope.insert(temp + decr);
    if(ok)
      slope.insert(0);
    
    //cout << val0 << '\n';
    //for(auto x : slope) 
      //cout << x << ' ';
    //cout << '\n';
  }
  void calculate() {
    ll sum = 0;
    for(int i = 1; i <= last; i++) {
      while(slope.size() && *slope.begin() < i)
        val0--, slope.erase(slope.begin());
      //cout << i << ' ' << val0 << '\n';
      sum += (ll)val0 * (val0 - 1) / 2LL;
    }
    #undef it
    cout << sum << '\n';
    return;
  }
}

vector<int> v[nmax];

int main() {
  ios_base::sync_with_stdio(0);
  cin.tie(0);
  int n;
  cin >> n;
  int maxx = 0;
  for(int i = 0,a ,b; i < n; i++) {
    cin >> a >> b;
    maxx = max(maxx, a);
    v[a].push_back(b);
  }
  sort(v, v + n);
  Slope::init();
  for(int i = 1; i <= maxx; i++) {
    for(auto r : v[i])
      Slope::insert(i, r);
  }
  Slope::calculate();
  return 0;
}

Compilation message

sails.cpp: In function 'void Slope::insert(int, int)':
sails.cpp:23:26: warning: comparison of integer expressions of different signedness: 'std::multiset<int>::size_type' {aka 'long unsigned int'} and 'int' [-Wsign-compare]
   23 |       while(slope.size() < val0) {
      |             ~~~~~~~~~~~~~^~~~~~
# Verdict Execution time Memory Grader output
1 Correct 1 ms 2636 KB Output is correct
2 Incorrect 1 ms 2636 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2636 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Incorrect 1 ms 2636 KB Output isn't correct
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 3 ms 5196 KB Execution killed with signal 11
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Correct 13 ms 2752 KB Output is correct
2 Correct 2 ms 2636 KB Output is correct
# Verdict Execution time Memory Grader output
1 Correct 91 ms 2904 KB Output is correct
2 Incorrect 7 ms 2892 KB Output isn't correct
3 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1088 ms 4332 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 21 ms 7108 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1076 ms 3792 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Execution timed out 1084 ms 5044 KB Time limit exceeded
2 Halted 0 ms 0 KB -
# Verdict Execution time Memory Grader output
1 Runtime error 37 ms 9012 KB Execution killed with signal 6
2 Halted 0 ms 0 KB -