Nu aveti permisiuni pentru a descarca fisierul grader_test1.ok
Cod sursa(job #393440)
Utilizator | Data | 9 februarie 2010 14:40:30 | |
---|---|---|---|
Problema | Branza | Scor | 30 |
Compilator | cpp | Status | done |
Runda | Arhiva de probleme | Marime | 0.69 kb |
#include <stdio.h>
#include<vector>
#include<algorithm>
#include<map>
#include <set>
#include <iostream>
#define ll long long
#define N 10050
using namespace std;
int c[N];
int p[N];
int n, t, cost;
int s;
ll ans;
multiset<int> s1;
multiset<int>::iterator its[N];
int main()
{
freopen("branza.in", "r", stdin);
freopen("branza.out", "w", stdout);
cin >> n >> cost >> t;
for (int i = 0; i < n; i++)
{
scanf("%d", &c[i]);
scanf("%d", &p[i]);
}
for (int i = 0; i < n; i++)
{
its[i] = s1.insert(c[i] - s);
if (s1.size() > t + 1)
{
s1.erase(its[i - t - 1]);
}
ans += (s + (*s1.begin())) * (ll) p[i];
s += cost;
}
printf("%lld", ans);
return 0;
}