QOJ.ac

QOJ

IDProblemSubmitterResultTimeMemoryLanguageFile sizeSubmit timeJudge time
#661376#8230. SubmissionsLavender_Field#RE 88ms73676kbC++207.2kb2024-10-20 15:58:292024-10-20 15:58:29

Judging History

你现在查看的是最新测评结果

  • [2024-10-20 15:58:29]
  • 评测
  • 测评结果:RE
  • 用时:88ms
  • 内存:73676kb
  • [2024-10-20 15:58:29]
  • 提交

answer

#include<bits/stdc++.h>
using namespace std;
const int N=1e5+5;
struct ques{
    int AC_times,submit_times,last_submit;
    int first_AC=-1,second_AC=-1,first_submit=-1;
};
struct node{
    string name;
    int solved,time;
    int least_unsolved,del_time_most;
    int max_unsolved;
    int once_least_solved,most_time_added;
    ques pro[27];
}a[N];
bool less_equal_cmp(node i, node j){
    if(i.solved != j.solved) return i.solved>j.solved;
    return i.time<=j.time;
}
int T,m,cnt,n;
bool has_zero;
map<string,int> ma;
string tmp;
vector<string> ans;
int max_zero_penalty;
void solve(){
    scanf("%d",&m);max_zero_penalty=0;
    for(int i=1;i<=cnt;i++){
        a[i].solved=a[i].time=a[i].least_unsolved=a[i].max_unsolved=0;
        a[i].del_time_most=a[i].once_least_solved=a[i].most_time_added=0;
        for(int j=1;j<=26;j++){
            a[i].pro[j].AC_times=0;
            a[i].pro[j].submit_times=0;
            a[i].pro[j].first_AC=-1;
            a[i].pro[j].second_AC=-1;
            a[i].pro[j].first_submit=-1;
            a[i].pro[j].last_submit=-1;
        }
    }
    
    cnt=n=0;
    has_zero=0;ans.clear();
    ma.clear();
    for(int i=1,t;i<=m;i++){
        cin>>tmp;
        int teamid;
        if(ma.count(tmp)==0){
            ma[tmp]=++cnt;
            a[cnt].name=tmp;
        }
        teamid=ma[tmp];
        char ch[10];scanf("%s",ch);
        int pro_id=ch[0]-'A'+1;
        scanf("%d",&t);
        scanf("%s",ch);
        if(ch[0]=='a'){
            a[teamid].pro[pro_id].AC_times++;
            a[teamid].pro[pro_id].submit_times++;
            if(a[teamid].pro[pro_id].AC_times==1){
                a[teamid].pro[pro_id].first_AC=t+20*(a[teamid].pro[pro_id].submit_times-1);
            }
            else if(a[teamid].pro[pro_id].AC_times==2){
                a[teamid].pro[pro_id].second_AC=t+20*(a[teamid].pro[pro_id].submit_times-1);
            }
            if(a[teamid].pro[pro_id].submit_times==1){
                a[teamid].pro[pro_id].first_submit=t+20*(a[teamid].pro[pro_id].submit_times-1);
            }
            a[teamid].pro[pro_id].last_submit=t+20*(a[teamid].pro[pro_id].submit_times-1);
        }
        else{
            a[teamid].pro[pro_id].submit_times++;
            if(a[teamid].pro[pro_id].submit_times==1){
                a[teamid].pro[pro_id].first_submit=t+20*(a[teamid].pro[pro_id].submit_times-1);
            }
            a[teamid].pro[pro_id].last_submit=t+20*(a[teamid].pro[pro_id].submit_times-1);
        }
    }
    for(int i=1;i<=cnt;i++){
        int teamid=i;
        a[teamid].least_unsolved=1e9;
        a[teamid].del_time_most=0;
        a[teamid].once_least_solved=1e9;
        a[teamid].most_time_added=0;
        a[teamid].max_unsolved=0;
        for(int i=1;i<=26;i++){
            if(a[teamid].pro[i].AC_times>=1){
                a[teamid].solved++;
                a[teamid].time+=a[teamid].pro[i].first_AC;
                a[teamid].del_time_most=max(a[teamid].del_time_most,a[teamid].pro[i].first_AC-a[teamid].pro[i].first_submit);
                if(a[teamid].pro[i].AC_times==1){
                    a[teamid].once_least_solved=min(a[teamid].once_least_solved,a[teamid].pro[i].first_AC);
                }
                else{
                    a[teamid].most_time_added=max(a[teamid].most_time_added,a[teamid].pro[i].second_AC-a[teamid].pro[i].first_AC);
                }
            }
            else{
                if(a[teamid].pro[i].submit_times>=1){
                    a[teamid].least_unsolved=min(a[teamid].least_unsolved,a[teamid].pro[i].first_submit);
                    a[teamid].max_unsolved=max(a[teamid].max_unsolved,a[teamid].pro[i].last_submit);
                }
            }
        }
        if(a[teamid].solved>=1) n++;
        else has_zero=1;
        if(a[teamid].solved==0){
            // cout<<"zero"<<a[teamid].name<<endl;
            max_zero_penalty=max(max_zero_penalty,a[teamid].max_unsolved);
        }
    }
    int gold=min((n-1)/10+1,35);
    sort(a+1,a+1+cnt,less_equal_cmp);
    // printf("gold %d %d\n",gold,n);
    for(int i=1;i<=cnt;i++){
        // int least_unsolved,del_time_most;
    // int once_least_solved,most_time_added;
        if(less_equal_cmp(a[i],a[gold])){
            ans.push_back(a[i].name);
        }
        else if(less_equal_cmp(a[i],a[gold+1])){
            // cout<<"?"<<a[i].name<<endl;
            node t1=a[i];
            if(a[i].least_unsolved!=1e9){
                t1.solved++;
                t1.time+=a[i].least_unsolved;
            }
            else{
                t1.time-=a[i].del_time_most;
            }
            if(a[i].solved ==0 && t1.solved == 1 && n%10==0 && gold!=35) gold++;
            if(less_equal_cmp(t1,a[gold])){
                ans.push_back(a[i].name);continue;
            }
            if(a[i].solved ==0 && t1.solved == 1 && n%10==0  && gold!=35) gold--;


            // printf("why %d %d\n",has_zero,n);
            if(has_zero && n%10==0){
                if(a[i].solved==0 || a[i].solved>=2){
                    ans.push_back(a[i].name);continue;
                }
                else{
                    // printf("zero %d\n",max_zero_penalty);
                    if(max_zero_penalty>=a[i].time){
                        ans.push_back(a[i].name);continue;
                    }
                }
                
            }

            // printf()
            for(int j=1;j<=gold;j++){
                node t2=a[j];
                if(a[j].once_least_solved!=1e9){
                    t2.solved--;
                    t2.time-=a[j].once_least_solved;
                }
                else{
                    t2.time+=a[j].most_time_added;
                }
                if(t2.solved==0 && n%10==1 && n<=341) continue;
                if(less_equal_cmp(a[i],t2)){
                    ans.push_back(a[i].name);
                    break;
                }
            }
        }
        else{
            node t1=a[i];
            // cout<<"!"<<a[i].name<<endl;
            if(a[i].least_unsolved!=1e9){
                t1.solved++;
                t1.time+=a[i].least_unsolved;
            }
            else{
                // printf("? %d\n",a[i].del_time_most);
                t1.time-=a[i].del_time_most;
            }
            if(a[i].solved ==0 && t1.solved == 1 && n%10==0  && gold!=35) gold++;
            // printf("compare gold %d\n",gold);
            if(less_equal_cmp(t1,a[gold])){
                ans.push_back(a[i].name);continue;
            }
            if(a[i].solved ==0 && t1.solved == 1 && n%10==0  && gold!=35) gold--;
        }
    }
    printf("%d\n",ans.size());
    for(auto x:ans){
        cout<<x<<" ";
    }
    printf("\n");
}
int main(){
    scanf("%d",&T);
    while(T--) solve();
    return 0;
}
/*
2
11
A A 1 accepted
B B 1 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 accepted
H H 2 accepted
I I 2 accepted
J J 2 accepted
K K 2 accepted
12
A A 1 accepted
A X 1 accepted
K K 1 rejected
B B 2 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 accepted
H H 2 accepted
I I 2 accepted
J J 2 accepted
*/

Details

Tip: Click on the bar to expand more detailed information

Test #1:

score: 100
Accepted
time: 8ms
memory: 73388kb

input:

2
5
TSxingxing10 G 0 rejected
TSxingxing10 B 83 accepted
aoliaoligeiliao J 98 accepted
TS1 J 118 accepted
TS1 B 263 accepted
12
AllWayTheNorth A 0 rejected
YaoYaoLingXian Y 10 accepted
XuejunXinyoudui1 X 200 rejected
XuejunXinyoudui1 X 200 accepted
LetItRot L 215 accepted
AllWayTheNorth W 250 accept...

output:

2
TS1 TSxingxing10 
4
ImYourFan LetItRot XuejunXinyoudui1 AllWayTheNorth 

result:

ok 2 test cases ok. (2 test cases)

Test #2:

score: 0
Accepted
time: 0ms
memory: 73676kb

input:

2
2
jiangly_fan A 1 accepted
jiangly B 23 accepted
3
conqueror_of_tourist A 1 accepted
conqueror_of_tourist A 2 accepted
tourist B 23 accepted

output:

2
jiangly_fan jiangly 
1
conqueror_of_tourist 

result:

ok 2 test cases ok. (2 test cases)

Test #3:

score: 0
Accepted
time: 7ms
memory: 73456kb

input:

2
13
A A 1 accepted
A X 1 accepted
K K 1 rejected
B B 2 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 accepted
H H 2 accepted
I I 2 accepted
J J 2 accepted
K K 2 rejected
12
A A 1 accepted
A X 1 accepted
B B 2 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 a...

output:

11
A J I H G F E D C B K 
1
A 

result:

ok 2 test cases ok. (2 test cases)

Test #4:

score: 0
Accepted
time: 0ms
memory: 73408kb

input:

2
11
A A 1 accepted
B B 1 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 accepted
H H 2 accepted
I I 2 accepted
J J 2 accepted
K K 2 accepted
12
A A 1 accepted
A X 1 accepted
K K 1 rejected
B B 2 accepted
C C 2 accepted
D D 2 accepted
E E 2 accepted
F F 2 accepted
G G 2 a...

output:

2
B A 
2
A K 

result:

ok 2 test cases ok. (2 test cases)

Test #5:

score: 0
Accepted
time: 88ms
memory: 73376kb

input:

100000
1
M3JytWoaEXxkACy_mBAQ R 111 accepted
1
sQ O 151 accepted
1
JinbrcS58gNEE5yTSkT B 140 accepted
1
cklwBY V 243 accepted
1
v_o42YmvEKFwy Q 260 rejected
1
ftQVK8S_um22w K 265 accepted
1
_bQBeFeDpYQhvZcLf9l3 Z 147 accepted
1
KvDcEAIDN A 75 rejected
1
H3MUK6 A 101 rejected
1
gxYo_oCFn2J8aIben U 54...

output:

1
M3JytWoaEXxkACy_mBAQ 
1
sQ 
1
JinbrcS58gNEE5yTSkT 
1
cklwBY 
1
v_o42YmvEKFwy 
1
ftQVK8S_um22w 
1
_bQBeFeDpYQhvZcLf9l3 
1
KvDcEAIDN 
1
H3MUK6 
1
gxYo_oCFn2J8aIben 
1
_isnlUGK0ddI 
1
BERcVjyCp 
1
6In2do_50ylch 
1
f0r3SXc6brMjT 
1
7njYOapSwvogA 
1
x 
1
y1w3KvxylfxwprRBYw 
1
aGedzS 
1
iPo0GDhIF 
1
4Vf...

result:

ok 100000 test cases ok. (100000 test cases)

Test #6:

score: -100
Runtime Error

input:

10000
42
Bzs0PiQMXGZ5rRZ_2D G 2 accepted
9XtB_VIfbRRL E 11 accepted
FVJL M 13 rejected
a S 19 accepted
tsd Z 20 rejected
MyCqVEg1ONjZ U 22 accepted
6SgZMn N 51 rejected
Qua1Pti3vKhyQKDUm P 54 accepted
i29 M 63 accepted
zPqu D 68 rejected
xx2yiu6x C 71 rejected
fYuK1KNkuyO5HRCq L 76 rejected
tXWpYVqj...

output:

4
Qua1Pti3vKhyQKDUm fYuK1KNkuyO5HRCq xiLm0TUOF3T tsd 
2
t3 JP 
2
fhYPGC8W82NwJTQL 77sgqpbTIr_Zt1 
2
3BQ pVWDEz 
2
buCeoOotAkV8DaFD6 tg 
1
UkXQ3iaNJ 
2
vwfw ALTqPt7JUSLrl 
1
QTEzV6tp 
3
9cy_y_RNRwex8j7224hz wJlbqIU 4e1l0pO8eFjZwkDo 
2
eiuF7a_ 6mbCu5zA 
1
xy6QBr8ECi 
3
ldaKLZb1oS1sS PezeyUurYoz7N1iGU ...

result: