제출 #278062

#제출 시각아이디문제언어결과실행 시간메모리
278062erkamXylophone (JOI18_xylophone)C++17
0 / 100
3 ms384 KiB
#include "xylophone.h" #include<bits/stdc++.h> #define endl "\n" #define all(v) v.begin(),v.end() #define st first #define nd second #define mp make_pair #define pb push_back using namespace std; typedef long long lo; const int mod=1000000007,N=500005; lo a,b,c,d,e,f,g=1,h[N]; pair<lo,lo>arr[N]; string s; vector<lo>v; // int query(int a,int b){ } // void answer(int a,int b){ } void solve(int n){ for(lo i=1;i<n;i++){ arr[i].st=query(i,i+1); if(i<n-1)arr[i].nd=query(i,i+2); } h[1]=1; for(lo i=1;i<=n-2;i++){ if(arr[i].st+arr[i+1].st==arr[i].nd)h[i+1]=h[i]; else h[i+1]=(h[i]^1); } lo mx=0,sum=0,mn=0; for(lo i=1;i<n;i++){ if(h[i]==0)sum-=arr[i].st; else sum+=arr[i].st; mx=max(sum,mx); mn=min(sum,mn); } if(mx-mn==n-1){ lo hehe=n-mx; assert(hehe<=n and hehe>=1); answer(1,hehe); for(lo i=1;i<n;i++){ hehe+=arr[i].st*(h[i]==0?-1:1); assert(hehe<=n and hehe>=1); answer(i+1,hehe); } return; } h[1]=0; sum=0,mx=0; for(lo i=1;i<=n-2;i++){ if(arr[i].st+arr[i+1].st==arr[i].nd)h[i+1]=h[i]; else h[i+1]=(h[i]^1); } for(lo i=1;i<n;i++){ if(h[i]==0)sum-=arr[i].st; else sum+=arr[i].st; mx=max(sum,mx); } lo hehe=n-mx; answer(1,hehe); assert(hehe<=n and hehe>=1); for(lo i=1;i<n;i++){ hehe+=arr[i].st*(h[i]==0?-1:1); answer(i+1,hehe); assert(hehe<=n and hehe>=1); } } // int main(){ // #ifdef local // freopen("in.txt","r",stdin); // freopen("out.txt","w",stdout); // #endif // ios_base::sync_with_stdio(false); // cin.tie(NULL); cout.tie(NULL); // // cin >> g; // // while(g--)solve(); // }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...