QOJ.ac
QOJ
ID | Problem | Submitter | Result | Time | Memory | Language | File size | Submit time | Judge time |
---|---|---|---|---|---|---|---|---|---|
#399906 | #6751. Game | ericmegalovania# | WA | 23ms | 5556kb | C++20 | 1.5kb | 2024-04-26 19:22:17 | 2024-04-26 19:22:18 |
Judging History
answer
#include<bits/stdc++.h>
using namespace std;
//#define ONLINE
#ifndef ONLINE
#define debug(...) fprintf(stderr,##__VA_ARGS__)
#else
#define debug(...) ;
#endif
using LL=long long;
using PII=pair<int,int>;
template<typename T>
inline T READ(){
T x=0; bool f=0; char c=getchar();
while(c<'0' || c>'9') f|=(c=='-'),c=getchar();
while(c>='0' && c<='9') x=x*10+c-'0',c=getchar();
return f?-x:x;
}
inline int read(){return READ<int>();}
inline LL readLL(){return READ<LL>();}
mt19937 rng(chrono::system_clock::now().time_since_epoch().count());
void solve(){
int n=read();
LL ans=0;
if(n==2){
ans=min(read(),read());
}
else{
vector<int>a(n),b,c(n);
for(int i=0;i<n;i++){
a[i]=read();
}
b=a;
for(int i=0;i<n;i++){
int x=min(b[i],b[(i+1)%n]);
b[i]-=x,b[(i+1)%n]-=x;
c[i]=x;
}
sort(c.begin(),c.end());
LL sum=accumulate(c.begin(),c.end(),0),res;
if(c.back()>sum/2){
res=sum-c.back();
}
else{
res=sum/2;
}
b=a;
for(int i=n-1;i>=0;i--){
int x=min(b[i],b[(i-1+n)%n]);
b[i]-=x,b[(i-1+n)%n]-=x;
c[i]=x;
}
sort(c.begin(),c.end());
sum=accumulate(c.begin(),c.end(),0);
if(c.back()>sum/2){
res=max(res,sum-c.back());
}
else{
res=max(res,sum/2);
}
ans=res;
}
cout<<ans;
}
int main(){
solve();
return 0;
}
/* stuff you should look for
* int overflow, array bounds
* special cases (n=1?)
* do smth instead of nothing and stay organized
* WRITE STUFF DOWN
* DON'T GET STUCK ON ONE APPROACH
*/
Details
Tip: Click on the bar to expand more detailed information
Test #1:
score: 100
Accepted
time: 0ms
memory: 3548kb
input:
2 7 5
output:
5
result:
ok 1 number(s): "5"
Test #2:
score: -100
Wrong Answer
time: 23ms
memory: 5556kb
input:
200000 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 1...
output:
705032704
result:
wrong answer 1st numbers differ - expected: '10000050000', found: '705032704'