문제 이해는 했는데 어떻게 풀지를 모르겠다
내가 생각한 걸로는 그냥 평균 이하를 다 하나씩 바꿔서 개수 세는 거...
(이것도 잘 모르겠음)
헉 이거 안 어려웠다!
실수 평균 때문에 어찌하지 고민했는데 평균 말고 합으로 생각하면 쉽게 풀린다.
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
using namespace std;
using i64 = long long;
using ii = pair<int, int>;
bool sortbysecond(const pair<int,int> &a, const pair<int,int> &b)
{
return (a.second < b.second);
}
int main() {
int n, r, avg;
scanf("%d %d %d", &n, &r, &avg);
int sum = 0;
vector<pair<int, int>> v(n);
for (int i = 0; i < n; i++)
{
scanf("%d %d", &v[i].first, &v[i].second);
sum += v[i].first;
v[i].first = r - v[i].first;
}
sort(v.begin(), v.end(), sortbysecond);
i64 count = avg * n - sum;
i64 ans = 0;
for (int i = 0; i < n; i++)
{
for (int j = 0; j < v[i].first; j++)
{
if (count <= 0)
break;
ans += v[i].second;
count--;
}
}
cout << ans;
return 0;
}
떼잉.. 시간초과 났다.
오늘 코포 풀었는데 그 문제랑 비슷한 느낌임
설명하기 어려운데 값을 최대한 채워넣고 나머지 채우는 그런 거... 어렵다... 헝
어려운게 아닌데 걍 내가 어려워하는 것 같음
으힝헝힝 고쳤다
오늘 했던 거라 그나마 빨리 짰다
#include <iostream>
#include <algorithm>
#include <vector>
#include <string>
#include <functional>
#include <string>
#include <queue>
#include <stack>
#include <set>
using namespace std;
using i64 = long long;
using ii = pair<int, int>;
bool sortbysecond(const pair<int,int> &a, const pair<int,int> &b)
{
return (a.second < b.second);
}
int main() {
int n, r, avg;
scanf("%d %d %d", &n, &r, &avg);
i64 sum = 0;
vector<pair<int, int>> v(n);
for (int i = 0; i < n; i++)
{
scanf("%d %d", &v[i].first, &v[i].second);
sum += v[i].first;
v[i].first = r - v[i].first;
}
sort(v.begin(), v.end(), sortbysecond);
i64 count = 0;
i64 ans = 0;
i64 calc = n * (i64)avg - sum;
if (calc <= 0)
{
cout << "0";
return 0;
}
for (int i = 0; i < n; i++)
{
if (v[i].first + count < calc)
{
count += v[i].first;
ans += (i64)v[i].second * v[i].first;
}
else
{
ans += (i64)v[i].second * (calc - count);
break;
}
}
cout << ans;
return 0;
}
ㅠ________ㅠ
다시 보기 싫어
i64 안 해서 한 5번은 낸듯
터질지 안 터질지 다음부터 미리 계산하자
'코드포스' 카테고리의 다른 글
[코드포스 Practice18] E. Lakes in Berland (0) | 2020.04.16 |
---|---|
[코드포스 Practice18] D. Mr. Kitayuta's Colorful Graph (0) | 2020.04.16 |
[코드포스 Practice18] B. Dreamoon and WiFi (0) | 2020.04.16 |
[코드포스 Practice18] A. Minimum Triangulation (0) | 2020.04.16 |
[코드포스 Practice18] 후기 (0) | 2020.04.16 |