Submission #996152

#TimeUsernameProblemLanguageResultExecution timeMemory
996152anHiepXylophone (JOI18_xylophone)C++17
0 / 100
1 ms2392 KiB
#include <bits/stdc++.h> #include "xylophone.h" using namespace std; // static int a[5000]; int a[5004]; int mp[5004][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; vector<int> used(n+1,0); used[a[1]] = 1; used[a[2]] = 2; 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] = j; 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] = j; continue; } } c = 0; } if(c){ bool cc= 1; if(used[1]>used[n])continue; 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; vector<int> used(n+1,0); used[a[1]] = 1; used[a[2]] = 2; 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] = j; 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] = j; 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; if(used[1]>used[n]) 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...