QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#344701 | #7964. 转化 | knightzzz1# | WA | 123ms | 39680kb | C++17 | 3.1kb | 2024-03-04 22:29:32 | 2024-03-04 22:29:33 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
const int N = 4e5 ;
using ll = long long;
int n,l,r;
ll ans[ N ];
double p;
struct node{
ll a, b , c , d ,id ;
bool operator < ( const node nd ){
return c > nd.c ;
}
}v[ N ] ;
vector< node > ab , a0 ,b0 ,zo ;
void slove(){
cin >> n ;
bool fg = false ;
for( int i = 1 ; i <= n ; i++ ){
cin >> v[ i ].a ; v[ i ].id = i ;
}
for( int i = 1 ; i <= n ; i++ ){
cin >> v[ i ].b ;
}
for( int i = 1 ; i <= n ; i++ ){
cin >> v[ i ].c ;
v[ i ].d = min( v[i].a + v[ i ].c , v[ i ].b ) ;
if( v[ i ].a && v[ i ].b ){
ab.push_back( v[ i ] ) ;
}else if( !v[ i ].a && v[ i ].b ){
a0.push_back( v[ i ] ) ;
}else if( v[ i ].a && !v[ i ].b ){
b0.push_back( v[ i ] ) ;
}else{
zo.push_back( v[ i ] ) ;
}
}
sort( ab.begin() , ab.end() ) ; sort( a0.begin() , a0.end() ) ;
sort( b0.begin() , b0.end() ) ; sort( zo.begin() , zo.end() ) ;
ll tran_cnt = 0 ;
ll sum = 0 ;
ll cntab = 0 , cntb = 0 , cntbooo = 0 ;
bool fgab = false , fgb = false ;
for(int i = 0 ; i < ab.size() ; i ++ ){
sum += ( ab[ i ].a + ab[ i ].c ) ;
tran_cnt += ab[ i ].d;
if( ab[ i ].b > ab[ i ].a + ab[ i ].c ) fgab = true ;
cntab += ab[ i ].d;
}
for(int i = 0 ; i < a0.size() ; i ++ ){
sum += ( a0[ i ].a + a0[ i ].c ) ;
//tran_cnt += v[ i ].d;
}
for(int i = 0 ; i < b0.size() ; i ++ ){
if( tran_cnt ){
if( b0[ i ].b == b0[ i ].c ){
cntbooo++;
}
sum += ( b0[ i ].a + b0[ i ].c ) ;
tran_cnt += min( b0[ i ].b , b0[ i ].a + b0[ i ].c + 1 );
cntb += min( b0[ i ].b , b0[ i ].a + b0[ i ].c + 1 );
if( b0[ i ].b > b0[ i ].a + b0[ i ].c ){
fgb = true ;
}
}
}
ll cnt = tran_cnt ;
for(int i = 0 ; i < zo.size() ; i ++ ){
if( cnt ){
sum += ( zo[ i ].a + zo[ i ].c ) ;
cnt -- ;
//tran_cnt += min( v[ i ].b , v[ i ].a + v[ i ].c + 1 );
}
}
for(int i = 0 ; i < ab.size() ; i ++ ){
ans[ ab[ i ].id ] = cntab - ab[ i ].b + ab[ i ].a + ab[ i ].c ;
ans[ ab[ i ].id ] -= cntbooo ;
}
for(int i = 0 ; i < a0.size() ; i ++ ){
ans[ a0[ i ].id ] = cntab + cntb - cntbooo ;
}
for(int i = 0 ; i < b0.size() ; i ++ ){
ans[ b0[ i ].id ] = cntab + cntb ;
ans[ b0[ i ].id ] -= cntbooo ;
}
for(int i = 0 ; i < zo.size() ; i ++ ){
ans[ zo[ i ].id ] = cntab + cntb - cntbooo ;
}
for(int i = 1 ; i <= n ; i++ ){
cout << ans[ i ] << " " ;
}
cout << endl;
cout << sum << endl;
}
int main(){
cin.tie(0);
cout.tie(0);
ios::sync_with_stdio(false);
int T = 1 ;
// cin >> T ;
while( T -- ){
slove();
}
return 0;
}
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 0
Wrong Answer
time: 123ms
memory: 39680kb
input:
351493 0 37836791 46095966 46912389 21595941 0 3 86568894 3 0 0 0 0 39910208 0 2 4 86885825 1 67660833 0 24488082 52447896 0 67190942 70457491 11166998 90470470 11095822 0 0 5 47222930 2 49736354 0 0 0 77339472 0 5 3 0 25347727 0 3 2 0 48844622 0 65142757 1 73733079 80634668 46683173 0 31644647 9760...
output:
42482492819203 42482492819203 42482321050432 42482502170700 42482492819203 42482492819203 42482548571563 42482492819203 42482864801662 42482492819203 42482492819203 42482492819203 42482492819203 42482052854879 42482492819203 42482687628444 42482570776928 42482492819203 42482651991328 42482492819203 ...
result:
wrong answer 1st lines differ - expected: '60073965049724 60073472376204 ...4 60073701685447 60073472376204', found: '42482492819203 42482492819203 ... 42482492819203 42482492819203 '