提出 #44085353
ソースコード 拡げる
// Sachin Mahawar
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
typedef vector<ll> vll;
typedef pair<ll, ll> pll;
typedef vector<pair<ll, ll>> vpll;
typedef vector<vector<ll>> vvll;
#define ff(i, x, n) for (ll i = x; i < n; i++)
#define fb(i, n, x) for (ll i = n; i >= x; i--)
#define out(v, n) \
ff(i, 0, n) { cout << v[i] << " "; } \
cout << endl;
#define yes cout << "Yes\n"
#define no cout << "No\n"
#define fs first
#define ss second
#define pb push_back
#define all(v) v.begin(), v.end()
#define inf 1000000000000000005
const ll mod = 1000000007;
const ll mod2 = 998244353;
#define fast \
std::ios::sync_with_stdio(false); \
cin.tie(NULL); \
cout.tie(NULL);
#define add(a, b, m) (((a % m) + (b % m) + m) % m)
#define sub(a, b, m) (((a % m) - (b % m) + m) % m)
#define mul(a, b, m) (((a % m) * (b % m) + m) % m)
// ---------------------------------Policy Based DataStructures-----------------------
#include <ext/pb_ds/assoc_container.hpp>
#include <ext/pb_ds/tree_policy.hpp>
using namespace __gnu_pbds;
template <class T>
using oset = tree<T, null_type, less<T>, rb_tree_tag, tree_order_statistics_node_update>;
template <class T>
using omulset = tree<T, null_type, less_equal<T>, rb_tree_tag, tree_order_statistics_node_update>;
// .find_by_order(x) : index of the x element in the set starting from 0
// .order_of_key(x) : number of elements strictly smaller than x in the set
// -----------------------------------------------------------------------------------
void brrrr()
{
ll n,m;cin>>n>>m;
vvll v(3,vll());
for(ll i=0;i<n;i++){
ll t,x;cin>>t>>x;
v[t].push_back(x);
}
sort(all(v[0]),greater<ll>());
sort(all(v[1]),greater<ll>());
sort(all(v[2]),greater<ll>());
for(ll i=1;i<(ll)v[2].size();i++){
v[2][i]+=v[2][i-1];
}
for(ll i=1;i<(ll)v[1].size();i++){
v[1][i]+=v[1][i-1];
}
for(ll i=1;i<(ll)v[0].size();i++){
v[0][i]+=v[0][i-1];
}
ll res = 0;
for(ll i=0;i<=min(m,(ll)v[0].size());i++){
ll rem = m - i;
ll j = (ll)v[1].size()-1;
if(rem <= (ll)v[1].size()){
j = rem-2;
}
ll k = max(0ll,rem-(ll)v[1].size()-1);
k = min(k, max(0ll,(ll)v[2].size()-1));
ll curr = 0;
// cout << i-1 << " " << j << " " << k << "######\n";
while(j>=0 && k<(ll)v[2].size()){
// cout << "take0: "<< i-1 << "\n";
// cout << "take1: "<< j << " " << v[1][j] << "\n";
// cout << "take2: "<< k << " " << v[2][k] << "\n";
if(v[2][k] >= j+1){
curr = v[1][j];
break;
}else{
j--;
k++;
}
}
res = max(res,(i ? v[0][i-1] : 0) + curr);
}
cout<<res<<"\n";
}
int main()
{
fast;
ll t = 0;
if (t)
{
cin >> t;
for (ll i = 1; i <= t; i++)
{
brrrr();
}
}
else
{
brrrr();
}
return 0;
}
提出情報
| 提出日時 | |
|---|---|
| 問題 | F - Cans and Openers |
| ユーザ | Pain_373 |
| 言語 | C++ (GCC 9.2.1) |
| 得点 | 0 |
| コード長 | 3275 Byte |
| 結果 | WA |
| 実行時間 | 223 ms |
| メモリ | 6072 KiB |
ジャッジ結果
| セット名 | Sample | All | ||||||
|---|---|---|---|---|---|---|---|---|
| 得点 / 配点 | 0 / 0 | 0 / 500 | ||||||
| 結果 |
|
|
| セット名 | テストケース |
|---|---|
| Sample | sample00.txt, sample01.txt, sample02.txt |
| All | sample00.txt, sample01.txt, sample02.txt, testcase00.txt, testcase01.txt, testcase02.txt, testcase03.txt, testcase04.txt, testcase05.txt, testcase06.txt, testcase07.txt, testcase08.txt, testcase09.txt, testcase10.txt, testcase11.txt, testcase12.txt, testcase13.txt, testcase14.txt, testcase15.txt, testcase16.txt, testcase17.txt, testcase18.txt, testcase19.txt, testcase20.txt, testcase21.txt, testcase22.txt, testcase23.txt, testcase24.txt, testcase25.txt, testcase26.txt, testcase27.txt, testcase28.txt, testcase29.txt, testcase30.txt, testcase31.txt, testcase32.txt, testcase33.txt, testcase34.txt, testcase35.txt, testcase36.txt, testcase37.txt, testcase38.txt, testcase39.txt, testcase40.txt, testcase41.txt, testcase42.txt |
| ケース名 | 結果 | 実行時間 | メモリ |
|---|---|---|---|
| sample00.txt | AC | 8 ms | 3496 KiB |
| sample01.txt | AC | 2 ms | 3448 KiB |
| sample02.txt | AC | 2 ms | 3508 KiB |
| testcase00.txt | AC | 52 ms | 5284 KiB |
| testcase01.txt | AC | 45 ms | 5224 KiB |
| testcase02.txt | AC | 48 ms | 5160 KiB |
| testcase03.txt | AC | 47 ms | 4852 KiB |
| testcase04.txt | AC | 48 ms | 4996 KiB |
| testcase05.txt | AC | 48 ms | 4928 KiB |
| testcase06.txt | AC | 49 ms | 5064 KiB |
| testcase07.txt | WA | 109 ms | 5608 KiB |
| testcase08.txt | AC | 74 ms | 5128 KiB |
| testcase09.txt | AC | 160 ms | 5220 KiB |
| testcase10.txt | AC | 95 ms | 6072 KiB |
| testcase11.txt | WA | 108 ms | 5576 KiB |
| testcase12.txt | AC | 170 ms | 5144 KiB |
| testcase13.txt | WA | 125 ms | 5096 KiB |
| testcase14.txt | AC | 100 ms | 5948 KiB |
| testcase15.txt | WA | 97 ms | 5528 KiB |
| testcase16.txt | WA | 125 ms | 5108 KiB |
| testcase17.txt | AC | 163 ms | 5176 KiB |
| testcase18.txt | WA | 55 ms | 5920 KiB |
| testcase19.txt | WA | 94 ms | 5616 KiB |
| testcase20.txt | WA | 127 ms | 5084 KiB |
| testcase21.txt | WA | 103 ms | 5220 KiB |
| testcase22.txt | AC | 103 ms | 6016 KiB |
| testcase23.txt | AC | 46 ms | 5640 KiB |
| testcase24.txt | AC | 49 ms | 5104 KiB |
| testcase25.txt | AC | 43 ms | 5096 KiB |
| testcase26.txt | AC | 48 ms | 5932 KiB |
| testcase27.txt | AC | 123 ms | 4980 KiB |
| testcase28.txt | AC | 223 ms | 5144 KiB |
| testcase29.txt | AC | 142 ms | 5392 KiB |
| testcase30.txt | AC | 58 ms | 5352 KiB |
| testcase31.txt | AC | 36 ms | 4856 KiB |
| testcase32.txt | AC | 42 ms | 5204 KiB |
| testcase33.txt | AC | 43 ms | 5212 KiB |
| testcase34.txt | AC | 73 ms | 5412 KiB |
| testcase35.txt | AC | 129 ms | 5332 KiB |
| testcase36.txt | AC | 43 ms | 5204 KiB |
| testcase37.txt | AC | 43 ms | 5300 KiB |
| testcase38.txt | AC | 51 ms | 5416 KiB |
| testcase39.txt | AC | 41 ms | 4880 KiB |
| testcase40.txt | AC | 42 ms | 5172 KiB |
| testcase41.txt | AC | 165 ms | 5200 KiB |
| testcase42.txt | AC | 74 ms | 5508 KiB |