Submission #996092

#TimeUsernameProblemLanguageResultExecution timeMemory
996092anHiepXylophone (JOI18_xylophone)C++17
0 / 100
2 ms344 KiB
#include <bits/stdc++.h> #include "xylophone.h" using namespace std; // static int a[5000]; int a[5004]; void solve(int n) { // int value = query(1, N); // for(int i = 1; i <= N; i++) { // answer(i, i); // } int dis = query(1,2); map<pair<int,int>,int> mp; for(int i = 3; i <= n; i++){ mp[{i-1, i}] = query(i-1, i); mp[{i-2, i}] = query(i-2, i); } for(int i = 1; i <= n; i++){ a[1] = i; bool c = 1; if(i + dis <= n){ c = 1; a[2] = i + dis; map<int,int> used; used[a[1]] = 1; used[a[2]] = 1; for(int j = 3; j <= n; j++){ int x = a[j-1] - mp[{j-1,j}]; if(x >= 1 && used[x] == 0){ if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){ a[j] = x; used[x] = 1; continue; } } x = a[j-1] + mp[{j-1,j}]; if(x <= n && used[x] == 0){ if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){ a[j] = x; used[x] = 1; continue; } } c = 0; } if(c){ bool cc =1; for(int j=1;j<=n;j++){ if(used[j]==0) cc = 0; } if(cc==0) continue; for(int j = 1;j<=n;j++){ // cout<<a[j]<<" "; answer(j,a[j]); } // cout<<endl; return; } } if(i - dis >= 1){ c = 1; a[2] = i - dis; map<int,int> used; used[a[1]] = 1; used[a[2]] = 1; for(int j = 3;j<=n;j++){ int x = a[j-1] - mp[{j-1, j}]; if(x >= 1 && used[x] == 0){ if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){ a[j] = x; used[x] = 1; continue; } } x = a[j-1] + mp[{j-1,j}]; if(x <= n && used[x] == 0){ if((max({x,a[j-1],a[j-2]})-min({x,a[j-1],a[j-2]})==mp[{j-2, j}]) && (max(x,a[j-1]) - min(x,a[j-1])==mp[{j-1,j}])){ a[j] = x; used[x] = 1; continue; } } c = 0; } if(c){ bool cc =1; for(int j=1;j<=n;j++){ if(used[j]==0) cc = 0; } if(cc==0) continue; for(int j = 1;j<=n;j++){ // cout<<a[j]<<" "; answer(j,a[j]); } // cout<<endl; return; } } } }
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...
#Verdict Execution timeMemoryGrader output
Fetching results...