Submission #259657

#TimeUsernameProblemLanguageResultExecution timeMemory
259657errorgornSanta Claus (RMI19_santa)C++14
30 / 100
1092 ms1912 KiB
//雪花飄飄北風嘯嘯 //天地一片蒼茫 #include <bits/stdc++.h> #include <ext/pb_ds/assoc_container.hpp> #include <ext/pb_ds/tree_policy.hpp> #include <ext/rope> using namespace std; using namespace __gnu_pbds; using namespace __gnu_cxx; #define ll long long #define ii pair<ll,ll> #define iii pair<ii,ll> #define fi first #define se second #define endl '\n' #define debug(x) cout << #x << " is " << x << endl; #define rep(x,start,end) for(auto x=(start)-((start)>(end));x!=(end)-((start)>(end));((start)<(end)?x++:x--)) #define all(x) (x).begin(),(x).end() #define sz(x) (int)(x).size() ll MAX(ll a){return a;} ll MIN(ll a){return a;} template<typename... Args> ll MAX(ll a,Args... args){return max(a,MAX(args...));} template<typename... Args> ll MIN(ll a,Args... args){return min(a,MIN(args...));} #define indexed_set tree<ll,null_type,less<ll>,rb_tree_tag,tree_order_statistics_node_update> //change less to less_equal for non distinct pbds, but erase will bug mt19937 rng(chrono::system_clock::now().time_since_epoch().count()); int n; int pos[100005]; int type[100005]; int val[100005]; int ans[100005]; multiset<int> s; bool test(int l,int r){ s.clear(); rep(x,0,r+1){ if (x<l){ if (type[x]==0){ s.insert(val[x]); } } else if (x==l){ rep(x,l,r+1) if (type[x]==0){ s.insert(val[x]); } } if (type[x]==1){ auto it=s.lower_bound(val[x]); if (it!=s.end()) s.erase(it); } } return s.empty(); } int main(){ ios::sync_with_stdio(0); cin.tie(0); cout.tie(0); int TC; cin>>TC; while (TC--){ cin>>n; rep(x,0,n) cin>>pos[x]; rep(x,0,n) cin>>type[x]; rep(x,0,n) cin>>val[x]; bool bad=false; int curr=n-1; rep(x,n,0){ if (bad) ans[x]=-1; else{ while (curr>x || !test(curr,x)){ curr--; } //cout<<x<<" "<<curr<<endl; if (curr==-1){ bad=true; ans[x]=-1; } else{ ans[x]=2*pos[x]-pos[curr]; } } if (type[x]==0) bad=true; } rep(x,0,n) cout<<ans[x]<<" "; cout<<endl; } }

Compilation message (stderr)

santa.cpp: In function 'int main()':
santa.cpp:19:26: warning: this 'for' clause does not guard... [-Wmisleading-indentation]
 #define rep(x,start,end) for(auto x=(start)-((start)>(end));x!=(end)-((start)>(end));((start)<(end)?x++:x--))
                          ^
santa.cpp:102:3: note: in expansion of macro 'rep'
   rep(x,0,n) cout<<ans[x]<<" "; cout<<endl;
   ^~~
santa.cpp:102:33: note: ...this statement, but the latter is misleadingly indented as if it were guarded by the 'for'
   rep(x,0,n) cout<<ans[x]<<" "; cout<<endl;
                                 ^~~~
#Verdict Execution timeMemoryGrader output
Fetching results...