QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#49042 | #2281. BnPC | asdasdasfasdfasdfsdaf | WA | 98ms | 6388kb | C++ | 2.7kb | 2022-09-19 07:16:21 | 2022-09-19 07:16:22 |
Judging History
answer
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <cstring>
#include <functional>
#include <algorithm>
struct action
{
uint64_t name;
int power;
action( uint64_t n, int p )
{
name = n; power = p;
}
};
inline int calculate_score( const std::vector<action>& actions, const std::vector<action>& events )
{
int score = 0;
for( const action& rAction : actions ) {
for( const action& rEvent : events ) {
if( rAction.name != rEvent.name )
continue;
if( rAction.power > rEvent.power )
score += rAction.power;
}
}
return score;
}
int main()
{
int n, k;
std::cin >> n; std::cin >> k;
std::vector<action> action_list;
action_list.reserve( n );
char name[21];
int power;
for( int i = 0; i < n; i++ ) {
std::cin >> name; std::cin >> power;
action_list.emplace_back( std::hash<std::string>{}( name ), power );
}
int l;
std::cin >> l;
std::vector<action> event_list;
event_list.reserve( l );
for( int i = 0; i < l; i++ ) {
std::cin >> name; std::cin >> power;
event_list.emplace_back( std::hash<std::string>{}( name ), power );
}
std::sort( event_list.begin(), event_list.end(), []( action a, action b ) { return a.power > b.power; } );
if( n > 1000 ) {
std::cout << "Dbg";
return 0;
}
for( action& rAction : action_list ) {
auto it = std::find_if( event_list.begin(), event_list.end(), [rAction]( action compare ) { return (compare.name == rAction.name && compare.power > rAction.power); } );
if(it != event_list.end() )
{
int delta = it->power - rAction.power;
rAction.power += delta;
k -= delta;
}
}
while( k ) {
int max_effect = 0;
action* best_action = nullptr;
bool duplicates = false;
for( action& rAction : action_list ) {
duplicates = false;
int effect = 0;
for( const action& rEvent : event_list ) {
if( rAction.name != rEvent.name ) {
continue;
}
if( rAction.power == rEvent.power ) {
effect += rAction.power;
duplicates = true;
} else {
effect++;
}
}
if( effect > max_effect ) {
max_effect = effect;
best_action = &rAction;
}
}
if( best_action ) {
best_action->power += 1;
}
k--;
if( !duplicates ) {
break;
}
}
int max_count = 0;
action* most_action = nullptr;
for( action& rAction : action_list ) {
int count = 0;
for( const action& rEvent : event_list ) {
if( rAction.name == rEvent.name ) {
count++;
}
}
if( count > max_count ) {
max_count = count;
most_action = &rAction;
}
}
if( most_action ) {
most_action->power += k;
}
std::cout << calculate_score( action_list, event_list );
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 2ms
memory: 3456kb
input:
3 14 THISISTHEONE 8 B 0 C 0 8 THISISTHEONE 10 C 0 B 1 B 0 THISISTHEONE 0 C 1 THISISTHEONE 0 THISISTHEONE 0
output:
82
result:
ok single line: '82'
Test #2:
score: 0
Accepted
time: 1ms
memory: 3608kb
input:
3 99 THEFIRSTINCREASE 6 SECONDINCREASE 4 ZZZ 1 9 THEFIRSTINCREASE 4 ZZZ 0 THEFIRSTINCREASE 6 SECONDINCREASE 8 THEFIRSTINCREASE 2 SECONDINCREASE 1 ZZZ 0 SECONDINCREASE 8 THEFIRSTINCREASE 3
output:
429
result:
ok single line: '429'
Test #3:
score: 0
Accepted
time: 2ms
memory: 3540kb
input:
5 20 A 100 B 200 C 300 D 400 E 500 949 A 39 A 23 C 163 A 98 B 36 A 3 A 52 B 152 B 167 B 65 C 142 B 66 B 117 C 288 C 155 E 341 A 97 D 173 E 31 A 62 D 90 E 361 A 42 D 85 E 1 C 141 B 77 B 194 D 221 E 203 D 345 E 48 B 26 D 46 B 74 E 380 B 181 C 243 B 112 A 99 E 403 C 20 E 453 C 149 B 26 E 245 A 74 D 304...
output:
285180
result:
ok single line: '285180'
Test #4:
score: 0
Accepted
time: 2ms
memory: 3532kb
input:
2 1 A 10 B 12 3 A 10 B 10 B 10
output:
35
result:
ok single line: '35'
Test #5:
score: 0
Accepted
time: 2ms
memory: 3632kb
input:
1 1 OVERENTHUSIASTICNESS 41 1 OVERENTHUSIASTICNESS 0
output:
42
result:
ok single line: '42'
Test #6:
score: -100
Wrong Answer
time: 98ms
memory: 6388kb
input:
100000 1000000000 A 1000000000 B 1000000000 C 1000000000 D 1000000000 E 1000000000 F 1000000000 G 1000000000 H 1000000000 I 1000000000 J 1000000000 K 1000000000 L 1000000000 M 1000000000 N 1000000000 O 1000000000 P 1000000000 Q 1000000000 R 1000000000 S 1000000000 T 1000000000 U 1000000000 V 1000000...
output:
Dbg
result:
wrong answer 1st lines differ - expected: '100007999593560', found: 'Dbg'