Submission #959573

#TimeUsernameProblemLanguageResultExecution timeMemory
959573LCJLYXylophone (JOI18_xylophone)C++14
Compilation error
0 ms0 KiB
#include <cstdio> #include <cstdlib> #include "xylophone.h" static const int N_MAX = 5000; static const int Q_MAX = 10000; static int N; static int A[N_MAX]; static bool used[N_MAX]; static int query_c; static int answer_c; int query(int s, int t) { if(query_c >= Q_MAX) { printf("Wrong Answer\n"); exit(0); } query_c++; if(!(1 <= s && s <= t && t <= N)) { printf("Wrong Answer2\n"); exit(0); } int mx = 0, mn = N + 1; for(int i = s - 1; i < t; i++) { if(mx < A[i]) { mx = A[i]; } if(mn > A[i]) { mn = A[i]; } } return mx - mn; } void answer(int i, int a) { answer_c++; if(!(1 <= i && i <= N)) { printf("Wrong Answer\n"); exit(0); } if(!(1 <= a && a <= N)) { printf("Wrong Answer\n"); exit(0); } if(used[i - 1]) { printf("Wrong Answer\n"); exit(0); } if(a != A[i - 1]) { printf("Wrong Answer\n"); exit(0); } used[i - 1] = true; } //code #include "xylophone.h" #include <bits/stdc++.h> using namespace std; #define show(x,y) cout << y << " " << #x << endl; #define show2(x,y,i,j) cout << y << " " << #x << " " << j << " " << #i << endl; #define show3(x,y,i,j,p,q) cout << y << " " << #x << " " << j << " " << #i << " " << q << " " << #p << endl; #define show4(x,y) for(auto it:y) cout << it << " "; cout << #x << endl; typedef pair<long long,int>pii; typedef pair<pii,pii>pi2; //static int A[5000]; //query(l,r) //answer(index,val) void solve(int n) { //find index of value 1 int l=1; int r=n; int mid; int one=1; while(l<=r){ mid=(l+r)/2; int hold=query(mid,n); //show2(mid,mid,hold,hold); if(hold==n-1){ one=mid; l=mid+1;; } else r=mid-1; } //show(one,one); int ans[n+5]; memset(ans,-1,sizeof(ans)); ans[one]=1; //neighbour values if(one>1){ ans[one-1]=1+query(one-1,one); } if(one<n){ ans[one+1]=1+query(one,one+1); } //recover other values for(int x=one-2;x>=1;x--){ int a=query(x,x+1); int b=query(x,x+2); int diff=abs(ans[x+1]-ans[x+2]); if(b==diff&&a<b){ //mid if(ans[x+1]>ans[x+2]){ ans[x]=ans[x+1]-a; } else{ ans[x]=ans[x+1]+a; } } else if(a>b){ if(ans[x+1]>ans[x+2]){ ans[x]=ans[x+1]-a; } else{ ans[x]=ans[x+1]+a; } } else{ if(ans[x+2]>ans[x+1]){ ans[x]=ans[x+1]-a; } else{ ans[x]=ans[x+1]+a; } } } for(int x=one+2;x<=n;x++){ int a=query(x-1,x); int b=query(x-2,x); int diff=abs(ans[x-1]-ans[x-2]); if(b==diff&&a<b){ //mid if(ans[x-1]>ans[x-2]){ ans[x]=ans[x-1]-a; } else{ ans[x]=ans[x-1]+a; } } else if(a>b){ if(ans[x-1]>ans[x-2]){ ans[x]=ans[x-1]-a; } else{ ans[x]=ans[x-1]+a; } } else{ if(ans[x-2]>ans[x-1]){ ans[x]=ans[x-1]-a; } else{ ans[x]=ans[x-1]+a; } } } //show4(ans,ans); for(int x=1;x<=n;x++){ answer(x,ans[x]); } } //code int main() { query_c = 0; answer_c = 0; if(scanf("%d", &N) != 1) { fprintf(stderr, "Error while reading input\n"); exit(1); } for(int i = 0; i < N; i++) { if(scanf("%d", A + i) != 1) { fprintf(stderr, "Error while reading input\n"); exit(1); } used[i] = false; } solve(N); if(!(answer_c == N)) { printf("Wrong Answer\n"); exit(0); } printf("Accepted : %d\n", query_c); }

Compilation message (stderr)

/usr/bin/ld: /tmp/ccBqR89Y.o: in function `query(int, int)':
grader.cpp:(.text+0x0): multiple definition of `query(int, int)'; /tmp/ccdpS4yW.o:xylophone.cpp:(.text+0x0): first defined here
/usr/bin/ld: /tmp/ccBqR89Y.o: in function `answer(int, int)':
grader.cpp:(.text+0xa0): multiple definition of `answer(int, int)'; /tmp/ccdpS4yW.o:xylophone.cpp:(.text+0xc0): first defined here
/usr/bin/ld: /tmp/ccBqR89Y.o: in function `main':
grader.cpp:(.text.startup+0x0): multiple definition of `main'; /tmp/ccdpS4yW.o:xylophone.cpp:(.text.startup+0x0): first defined here
collect2: error: ld returned 1 exit status