Submission #500675

#TimeUsernameProblemLanguageResultExecution timeMemory
500675600MihneaSails (IOI07_sails)C++17
40 / 100
1093 ms2176 KiB
#include <bits/stdc++.h>

using namespace std;

#define int long long

int gauss(int x) {
  return x * (x + 1) / 2;
}

struct Data {
  int total;
  int need;
};

bool operator < (Data a, Data b) {
  return a.total < b.total;
}

const int N = (int) 1e5 + 7;
const int INF = (int) 1e18;
int n;
int cnt[N];
Data guys[N];

signed main() {
  ios::sync_with_stdio(0); cin.tie(0);
  //freopen ("input", "r", stdin);
  cin >> n;
  for (int i = 1; i <= n; i++) {
    cin >> guys[i].total >> guys[i].need;
  }
  sort(guys + 1, guys + n + 1);

  for (int i = 1; i <= n; i++) {
    int total = guys[i].total;
    int need = guys[i].need;
    /// cnt e in ordine ordine descrescatoare
    int L = total - need + 1;
    int R = total;
    for (int j = L; j <= R; j++) {
      cnt[j]++;
    }
    sort(cnt + 1, cnt + total + 1);
    reverse(cnt + 1, cnt + total + 1);
  }

  int total = 0;

  for (int i = 1; i < N; i++) {
    total += gauss(cnt[i] - 1);
  }

  cout << total << "\n";

  return 0;
}
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...